**Readability** - Use namespace `CompanyX` instead of using in every method's return type. - Create single instance of `InvoiceTableAdapter` and `SqlConnection` and reuse it. - In `UpdateInvoice` method, instead of passing multiple properties, pass data model itself and use properties which are required inside `Update1` method. - You will need to put the cleanup of the connection in a `Dispose()` after making the data access class `IDisposable`. As pointed out by [ratchet freak][1] in another answer. Not sure why you're using 2 SQL connections. I would suggest you to use only one. After refactoring code should look like this: using CompanyX; using CompanyX.DataAccess.CompanyXTableAdapters; namespace CompanyX.DataAccess { public class CompanyXDataAccess : IDisposable { InvoiceTableAdapter ta = new InvoiceTableAdapter(); SqlConnection readerConnection = new SqlConnection(DB.GetReaderConnectionString()); SqlConnection writerConnection = new SqlConnection(DB.GetWriterConnectionString()); public InvoiceDataTable GetInvoiceByID(int ID) { ta.Connection = readerConnection; return ta.GetByID(ID); } public InvoiceDataTable GetInvoice(string userSID) { ta.Connection = readerConnection; return ta.Get(userSID); } public void DeleteInvoice(int ID) { ta.Connection = writerConnection; ta.Delete1(ID); } public void UpdateInvoice(Invoice m) { ta.Connection = writerConnection ta.Update1(m); } public void Dispose() { // Do clean up } } } [1]: https://codereview.stackexchange.com/users/32061/ratchet-freak