private CustomerDTO ProcessCustomer(string customerLine) { using (var unitOfWork = _factory.GetInstance()) { var fullName = ParseLine(customerLine, ' '); var firstName = fullName[0]; var lastName = fullName[1]; Expression <Func <CustomerDTO, bool> > customerSearchCriteria = (x => x.FirstName == firstName && x.LastName == lastName); var customer = unitOfWork.GetCustomers(customerSearchCriteria).FirstOrDefault(); if (customer == null) { customer = new CustomerDTO() { FirstName = firstName, LastName = lastName }; lock (_lockers[customer.GetType()]) { if (unitOfWork.GetCustomers(customerSearchCriteria).FirstOrDefault() == null) { unitOfWork.AddCustomer(customer); unitOfWork.Save(); } } } return(unitOfWork.GetCustomers(customerSearchCriteria).FirstOrDefault()); } }
public void Create(CustomerDTO t) { using (SqlConnection sqlConnection = new SqlConnection(connectionString)) { sqlConnection.Open(); using (SqlDataAdapter adapter = new SqlDataAdapter(sqlQuery, connectionString)) { DataSet dataSet = new DataSet(); adapter.Fill(dataSet, "Customers"); DataRow dataRowToAdd = dataSet.Tables["Customers"].NewRow(); foreach (var item in t.GetType().GetProperties()) { dataRowToAdd[item.Name] = item.GetValue(t, null); } dataSet.Tables["Customers"].Rows.Add(dataRowToAdd); SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(adapter); adapter.Update(dataSet.Tables["Customers"]); } sqlConnection.Close(); } }