我很确定我已经在某个地方看到了这个问题的答案,但是由于我在SO或谷歌上搜索了几次,我无论如何都要问它...
在Entity Framework中,删除数据对象的唯一方法似乎是
MyEntityModel ent = new MyEntityModel(); ent.DeleteObject(theObjectToDelete); ent.SaveChanges();
但是,这种方法需要首先将对象加载到Controller,只是为了删除它.有没有办法删除仅引用其ID的业务对象?
如果使用Linq或Lambda表达式有更聪明的方法,那也没关系.但主要目的是避免加载数据只是为了删除它.
值得了解的是,Entity Framework同时支持Linq to Entities和Entity SQL.如果您发现自己想要删除或更新可能会影响许多记录,您可以使用等效的ExecuteNonQuery
.
在Entity SQL中,这可能看起来像
Using db As New HelloEfEntities Dim qStr = "Delete " & _ "FROM Employee" db.ExecuteStoreCommand(qStr) db.SaveChanges() End Using
在这个例子中,db
是我的ObjectContext
.另请注意,该ExecuteStoreCommand
函数采用可选的参数数组.
我发现这篇文章,其中指出没有更好的方法来删除记录.给出的解释是,该记录唯一的所有外键,关系等也被删除,因此EF需要有关于记录的正确信息.我很困惑的是,为什么在没有来回加载数据的情况下无法实现这一点,但由于它不会经常发生,我已经决定(现在)我不会打扰.
如果您确实有这个问题的解决方案,请随时告诉我=)