无法从数据库中删除实体(Entity Framework 4.1)

时间:2012-09-18 20:42:58

标签: 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对象。我有一个每种类型的存储库和一个实现基本方法的通用存储库。

具体问题是我想要删除某个项目。删除孩子不是问题 - 一切都很完美 - 问题是我来删除实体本身。

考虑以下模型。我有一个实体“Foo”,它与“Bar”有1对多的关系。我在我的存储库中调用以下方法:

    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));
    }

GenericRepository“删除”方法是:

    public virtual void Delete(T entity)
    {
        _entities.Set<T>().Remove(entity);
    }

GenericRepository“保存”方法很简单:

    public virtual void Save()
    {
        _entities.SaveChanges();
    }

我想要上班的是:

        //First attempt
        //base.Delete(entity);
        //base.Save();

但遗憾的是,我(目前)删除该项目的唯一方法是运行一些只调用_entities.Database.ExecuteSqlCommand(SQL)的SQL。

我读过很多东西,但似乎没什么用。我真的很感激一些帮助,试图了解正在发生的事情。

谢谢,

0 个答案:

没有答案