无法删除实体的实例

时间:2015-02-06 19:20:16

标签: c# linq entity-framework

我正在使用visual studio 2013,我正在使用实体框架来开发项目。

我想删除实体的实例。

这是我的实体:

INOTESTEntities db = new INOTESTEntities();

var finaExam = db.classAssesmentDateInfo.Where(x => x.Id == 22).First();

当我要删除它时,我正在尝试db.DeleteObject(finaExam );

但是DeleteObject不存在所以我不能删除它。你能救我吗?。

2 个答案:

答案 0 :(得分:0)

如果您正在使用DbContext,则需要强制转换为ObjectContext以使用DeleteObject方法。

((IObjectContextAdapter)db).ObjectContext.DeleteObject(finaExam);

如果您想在没有强制转换的情况下直接使用DbContext,请使用删除语法:

db.classAssessmentDateInfo.Remove(finaExam);
db.SaveChanges();

删除将实体标记为已删除。调用SaveChanges时,标记的实体会生成删除查询。

最后,如果您使用的是VS 2013,您的项目很可能包括EF 5或6(我的投票是6),默认为DbContext而不是现在“已弃用”的ObjectContext。这就是您过去使用的语法不再适用于您的新项目的原因。

答案 1 :(得分:0)

您可能正在使用System.Data.Entity.DbContext而不是旧System.Data.Objects.ObjectContext,在这种情况下,您需要在DbSet上调用Remove()

db.classAssesmentDateInfo.Remove(finaExam);