C# 4.0 无法从数据库中删除实体(实体框架4.1)
我一直在拼命尝试从数据库中删除一个项目,但到目前为止无法使其正常工作。我看到的错误消息如下:C# 4.0 无法从数据库中删除实体(实体框架4.1),c#-4.0,entity-framework-4.1,ef-database-first,C# 4.0,Entity Framework 4.1,Ef Database First,我一直在拼命尝试从数据库中删除一个项目,但到目前为止无法使其正常工作。我看到的错误消息如下: "The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable." 我使用的是EF4.1,带有EDMX(数据库优先)和POCO对象。对于每种类型,我都有一个存储库和一个实现基本方法的通用存储库 具体问题是当我想删除
"The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable."
我使用的是EF4.1,带有EDMX(数据库优先)和POCO对象。对于每种类型,我都有一个存储库和一个实现基本方法的通用存储库
具体问题是当我想删除一个项目时。删除子对象不是问题-一切都很完美-问题是当我开始删除实体本身时
考虑以下模型。我有一个实体“Foo”,它与“Bar”有一对多的关系。我在我的存储库中调用以下方法:
public override void Delete(Models.Foo entity)
{
//Load the child items...
base.Context.Entry(entity).Collection(x => x.Bars).Load();
//Bar
BarRepository barRep = new BarRepository();
foreach (var item in entity.Bars)
{
var obj = barRep.GetById(item.ID);
barRep.Delete(obj);
}
barRep.Save();
//First attempt
//base.Delete(entity);
//base.Save();
//Have to resort to some SQL
base.ExecuteSqlCommand(string.Format("delete from Foo where ID = {0}", entity.ID));
}
一般存储“删除”方法是:
public virtual void Delete(T entity)
{
_entities.Set<T>().Remove(entity);
}
我想开始工作的是:
//First attempt
//base.Delete(entity);
//base.Save();
但不幸的是,(目前)我删除该项的唯一方法是运行一些SQL,它只调用_entities.Database.ExecuteSqlCommand(SQL)
我读了很多东西,但似乎什么都不管用。我真的很感激你能帮助我理解正在发生的事情
谢谢
Jose你不能配置级联删除吗?@GertArnold-你的确切意思是什么?我认为级联删除将用于关系而不是实际实体。谢谢。删除父项并级联删除子项。我已经实现了特定的删除方法,以便在需要这种级别的控制时可以执行一些审核任务。使用“级联”我会失去这个吗?谢谢。我不知道您的审核方法,但它们是在上下文本身中(例如SaveChanges覆盖),您应该可以。尝试你不能配置级联删除吗?@GertArnold-你的确切意思是什么?我认为级联删除将用于关系而不是实际实体。谢谢。删除父项并级联删除子项。我已经实现了特定的删除方法,以便在需要这种级别的控制时可以执行一些审核任务。使用“级联”我会失去这个吗?谢谢。我不知道您的审核方法,但它们是在上下文本身中(例如SaveChanges覆盖),您应该可以。尝试
//First attempt
//base.Delete(entity);
//base.Save();