2011-12-05 95 views

回答

3

您使用的是哪个版本的实体框架?

如果您使用Entity Framework 4.1或更高版本,并使用DbContext类,则可以使用ExecuteSqlCommand()方法向数据库发送DELETE语句。请参阅http://blogs.msdn.com/b/adonet/archive/2011/02/04/using-dbcontext-in-ef-feature-ctp5-part-10-raw-sql-queries.aspx(查看将原始命令发送到数据库部分)。这将是这个样子:

DbContext ctx = ... get your DbContext somehow... 
ctx.Database.ExecuteSqlCommand("DELETE FROM Foo WHERE FooID = 17"); 

如果您使用实体框架4.0和ObjectContext的(代替的DbContext)有一个类似的ExecuteStoreCommand方法(http://msdn.microsoft.com/en-us/library/ system.data.objects.objectcontext.executestorecommand.aspx)。

19

您可以使用虚拟对象:

var entity = new YourEntity { Key = yourKey }; 
context.Entities.Attach(entity); 
context.Entities.DeleteObject(entity); 
context.SaveChanges(); 
+7

从EF 5.0开始,您需要使用context.Entities.Remove(entity);而不是context.Entities.DeleteObject(entity); – Gabriel

1

取决于当你读到这封信上,实现任何黑客之前验证this ticket状态。

+0

有趣的建议。如果可以的话,请投票支持。 – ygoe