C# 添加多对多实体框架

C# 添加多对多实体框架,c#,asp.net,entity-framework-4,C#,Asp.net,Entity Framework 4,我有一个问题: 我有三张桌子: 使用者 菜单 用户菜单 UserMenu包含IdMenu和IdUser 在我的DataModelEntityFramework4.0中,我用我的表菜单的现有菜单填充我的用户模型和User.Menu(菜单是导航属性) 我必须保存用户,并将每个相关的菜单项保存在用户菜单表中 我得到以下例外情况: ObjectStateManager不包含带有 对“SGGED.Model.Menu”类型的对象的引用 代码 Users objUser = new Users(); ob

我有一个问题:

我有三张桌子:

  • 使用者
  • 菜单
  • 用户菜单
  • UserMenu包含IdMenu和IdUser

    在我的DataModelEntityFramework4.0中,我用我的表菜单的现有菜单填充我的用户模型和User.Menu(菜单是导航属性)

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

    我得到以下例外情况:

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

    代码

    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();
    
    如何处理这个问题

    致以最良好的祝愿


    米尔顿·卡马拉

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


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