【发布时间】:2010-02-02 23:00:59
【问题描述】:
我在使用 Entity Framework 更新数据库中的对象时遇到问题。
首先,概念是:
用户可以是组的成员,因此组包含用户。
为了在数据库中建模,我有以下结构:
用户: ID 姓名 等等
组: ID 名称
小组成员: 组ID 用户ID
GroupMembers 中的两个字段都是与用户 ID 和组 ID 相关的外键。当我将它加载到实体框架中时,它被正确建模,因为 Group 对象有一个 User 对象列表,并且每个 User 对象都有一个 Group 对象列表。
但是,当我将用户添加到组时,我遇到了以下问题:
var group = DAO.GetGroup(GroupID);
var user = DAO.GetUser(UserID);
group.Users.Add(user);
conn.SaveChanges();
无法更新实体集 'GroupMembers' 因为它有一个 定义查询和否 元素存在于 元素 支持当前的操作。
我在网上看到了各种建议将 ID 字段添加到 GroupMembers 表的文章 - 但是如果我这样做,我会在 EF 中收到一个映射错误,抱怨 ID 没有映射到任何东西。
谁能提供一些其他建议或解决方法?
谢谢,
克里斯
【问题讨论】:
-
GroupMembers的 PK 是什么?它应该是两列。你自定义了DefiningQuery吗? -
不,我没有自定义 DefiningQuery,主要是因为我不知道将其更改为什么,并且不想对我已经拥有的东西产生更大的不利影响! GroupMembers 根本没有主键,我确实添加了一个“ID”列,但映射由于未正确映射而引发错误。
标签: asp.net-mvc entity-framework