实体框架:如何通过主键删除记录?

时间:2011-12-05 20:36:31

标签: entity-framework

如果没有先使用SELECT语句加载实体,如何通过主键删除记录?

3 个答案:

答案 0 :(得分:20)

您可以使用虚拟对象:

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

答案 1 :(得分: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");

如果您正在使用Entity Framework 4.0和ObjectContext(而不是DbContext),则会有类似的ExecuteStoreCommand方法(http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.executestorecommand。 ASPX)。

答案 2 :(得分:1)

根据您何时阅读此内容,请在执行任何黑客攻击前验证this ticket的状态。