当我使用实体框架更新数据库中的对象时,我遇到了一个问题。
第一,概念是:
用户可以是组的成员,因此组包含用户。
要在数据库中对此进行建模,我有以下结构:
用户: ID、名称等。
组: ID名称
GroupMembers: GroupID UserID
GroupMembers中的两个字段都是与用户ID和组ID相关的外键。当我将其加载到实体框架中时,它的建模是正确的,因为一个组对象有一个用户对象列表,每个用户对象都有一个组对象列表。
但是,当我将一个用户添加到一个组时,我会遇到以下问题:
var group = DAO.GetGroup(GroupID);
var user = DAO.GetUser(UserID);
group.Users.Add(user);
conn.SaveChanges();无法更新EntitySet 'GroupMembers‘,因为它有一个DefiningQuery,并且元素中不存在支持当前操作的元素。
我在网上看到了许多建议将ID字段添加到GroupMembers表中的片段--但是如果这样做,我会在EF中得到一个映射错误,它抱怨ID没有映射到任何东西。
有没有人能提供一些其他的建议,或者一个解决办法?
谢谢,
克里斯
发布于 2010-02-02 15:00:59
从ID列中删除GroupMembers列。为GroupMembers创建一个PK,包括GroupID和UserID。现在,右键单击您的模型并从DB更新它。
EF设计器需要知道GroupID和UserID对是唯一的,这样才能得到正确的基数。
发布于 2010-02-02 15:00:32
通过将GroupMembers中的两个字段作为主键,我现在可以将其添加到表中。
谢谢你的帮助:)
克里斯
https://stackoverflow.com/questions/2184783
复制相似问题