添加多对多实体框架
本文关键字:框架 实体 添加 | 更新日期: 2023-09-27 18:37:19
我有一个问题:
我有3张桌子:
- 用户
- 菜单
- 用户菜单
UserMenu 包含 IdMenu 和 IdUser。
在我的 DataModel 实体框架 4.0 中,我正在填充我的用户模型,并使用我的表菜单的现有菜单填充 User.Menu(菜单是导航属性)。
我必须保存用户并将每个相关的菜单项保存在用户菜单表中。
我得到以下异常:
ObjectStateManager 不包含具有 引用类型为"SGGED"的对象。模型菜单'。
法典
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();
如何处理此问题的方法是什么?
此致敬意
米尔托姆·卡马拉
看看这篇关于多对多关系的文章:
与 EF 的多对多关系
问题很可能是itemUsers.Menu
中的项目在当前的 objData 上下文中不存在。 这可能是您从另一个上下文对象加载了它们,或者它们已在代码中创建但从未添加到 objData.Menus 集中。