实体框架将添加外键但不能修改

时间:2014-01-22 20:11:43

标签: entity-framework foreign-keys

我有HomeMadeItems,它包含对Location对象的引用。因此当实体框架代码首次迁移时创建了我的db,外键。呜呜。以下是保存项目的代码:

    public int SaveHomeMadeItem(HomeMadeItem mod)
    {
        var _loc = this.GetLocation(mod.Location.Id);
        using (var s = new InventoryEntityFramework())
        {
            s.Locations.Attach(_loc);
            mod.Location = _loc;

            // returns the PK integer
            if (mod.Id == 0) // new record
            {
                s.InventoryItems.Add(mod);
                s.SaveChanges();
                return mod.Id;

            }
            else
            {
                // TODO: figure out why I cannot change location 
                s.InventoryItems.Attach(mod);
                s.Entry(mod).State = EntityState.Modified;
                s.Entry(mod.Location).State = EntityState.Modified;
                s.SaveChanges();
                return mod.Id;
            }
        }
    }

这是从一个控制器调用的,该控制器从一个视图中调用,该视图的位置来自下拉列表并且只给出一个id,而不是实际的位置对象。所以我得到正确的位置对象并将其附加到上下文,并将其提供给我的模型。您可以在if语句之前看到它根据项目PK的存在来决定添加或编辑。

添加代码效果很好。但是,如果我尝试编辑项目,其他属性将正确保存,但不会保存项目位置的外键。

我在其他地方看过这个问题,但没有回答。希望能找到一些帮助。

由于

0 个答案:

没有答案
相关问题