Ответ 1
db.AcceptAllChanges()
предполагает, что вы закончили с любой связанной историей изменений и отбросили его - если у вас возникнут какие-либо дополнительные проблемы, вы не сможете восстановить эти изменения. db.SaveChanges(false)
сохраняет эти изменения в памяти в случае возникновения проблем.
Подробнее см. http://blogs.msdn.com/b/alexj/archive/2009/01/11/savechanges-false.aspx.
db.AddToCustomer()
- это строго типизированная оболочка вокруг db.Customers.AddObject()
. Посмотрите на его определение, и вы поймете, что я имею в виду. Я бы использовал метод db.AddToCustomer()
, поскольку он строго типизирован и дает вам проверку типа времени компиляции.
Я предполагаю, что единственная причина, по которой нет DeleteFromCustomer()
заключается в том, что они не думали, что работа будет необходима (люди склонны добавлять больше, чем они удаляют). Нет ничего, что могло бы помешать вам создавать собственные методы расширения, чтобы реализовать его самостоятельно.
EF не является потокобезопасным, если вы хотите выполнять обновления, вам нужно будет управлять блокировкой. Подробнее см. http://blog.cincura.net/230902-multithreading-with-entity-framework/:)