0

我有一个问题:

我有 3 张桌子:

  1. 用户
  2. 菜单
  3. 用户菜单

UserMenu 包含 IdMenu 和 IdUser。

在我的 DataModel Entity Framework 4.0 中,我正在填充我的用户模型并用我的表菜单的现有菜单填充 User.Menu(菜单是导航属性)。

我必须在 UserMenu 表中保存用户并保存每个相关的菜单项。

我得到以下异常:

ObjectStateManager 不包含引用“SGGED.Model.Menu”类型对象的 ObjectStateEntry。

代码

Users objUser = new Users();

objUser.name = itemUsers.name.Trim();
objUser.email = itemUsers.email.Trim();
objUser.password = Util.HashString("12345");
objUser.effdt = DateTime.Now;

objData.Users.AddObject(objUser);

foreach (var itemMenu in itemUsers.Menu)
{
    objData.ObjectStateManager.ChangeObjectState(itemMenu, EntityState.Unchanged);
}

affRows = objData.SaveChanges();

处理这个问题的方法是什么?

此致,

米尔顿·卡马拉

4

2 回答 2

0

看看这篇关于多对多关系的帖子:

与 EF 的多对多关系

于 2012-06-16T03:44:00.340 回答
0

问题很可能是itemUsers.Menu您当前的 objData 上下文中不存在其中的项目。这可能是您从另一个上下文对象加载它们,或者它们已在代码中创建但从未添加到 objData.Menus 集中。

于 2012-06-16T06:57:24.727 回答