public static void Create(Customer customer) { using (var db = new NorthwindEntities()) { db.Customers.Add(customer); db.SaveChanges(); } }
// Work only with original object. Don't use select with update public static void Update(string customerId, string newCompanyName) { using (var db = new NorthwindEntities()) { var customerToUpdate = db.Customers.FirstOrDefault(c => c.CustomerID == customerId); customerToUpdate.CompanyName = newCompanyName; db.SaveChanges(); } }
public static void Delete(string deletingCriteria) { using (var db = new NorthwindEntities()) { var customerToDelete = db.Customers.FirstOrDefault(c => c.CompanyName.Contains(deletingCriteria)); db.Customers.Remove(customerToDelete); db.SaveChanges(); } }
/// <summary> /// Problem solved by only using only one connection or introducing transactions isolation levels /// </summary> public static void Main() { var firstConection = new NorthwindEntities(); var secondConection = new NorthwindEntities(); var customerFromFirstCon = firstConection.Customers.First(); var customerFromSecondCon = secondConection.Customers.First(); Console.WriteLine("Initial Name FisrtCon: {0} - SecondCon {1}", customerFromFirstCon.CompanyName, customerFromSecondCon.CompanyName); customerFromFirstCon.CompanyName = "Mercedes"; // Second name will win. customerFromSecondCon.CompanyName = "Jaguar"; firstConection.SaveChanges(); secondConection.SaveChanges(); var result = new NorthwindEntities().Customers.First(); Console.WriteLine("Name After Change {0}", result.CompanyName); }