在Entity Framework中,要删除对象,请执行以下操作:
model delObj = new model { ID = id };
db.model.Attach(delObj);
db.model.Remove(delObj);
db.SaveChanges();
现在,我有一个问题..类model
实际上是一个抽象类,它是数据库中的实际表。
在C#中,我制作了两个子类,因此我不完全知道应该删除哪个子对象,因为在运行时分配了id
。
上面的代码不再起作用,因为模型是抽象的,现在我不能创建“来自抽象类的对象”
如何使用抽象类删除子对象?
答案 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()