如何从Entity Framework中的抽象超类删除子对象?

时间:2018-11-29 14:50:31

标签: c# .net winforms entity-framework-6

在Entity Framework中,要删除对象,请执行以下操作:

model delObj = new model { ID = id };
db.model.Attach(delObj);
db.model.Remove(delObj);
db.SaveChanges();

现在,我有一个问题..类model实际上是一个抽象类,它是数据库中的实际表。

在C#中,我制作了两个子类,因此我不完全知道应该删除哪个子对象,因为在运行时分配了id

上面的代码不再起作用,因为模型是抽象的,现在我不能创建“来自抽象类的对象”

如何使用抽象类删除子对象?

1 个答案:

答案 0 :(得分:1)

根据您的要求的几种可能的选择:

1)在删除之前检索对象。不利的一面-额外的查询,尽管检查您是否确实要删除某些内容并不总是一件坏事。

var found = db.model.first(x=>x.ID==id);
if (found != null) {    
db.Remove(found); 
db.SaveChangesAsync();    
}

2)不要将您的基类设为Abstract。我不知道您将基类抽象化的原因,但我会考虑是否真正需要它。

3)如果确定需要抽象类,并且/或者不想先使用直接SQL命令进行查询。

db.Database.ExecuteSqlCommand()