在实体框架中映射片段的问题

Che*_*hev 12 entity-relationship entity-framework entity-framework-4 entity-framework-designer

我正在使用实体框架,我遇到了一个奇怪的构建错误.

我正在建立一个论坛,我在数据库中设置了一个"忽略"的表,当人们不喜欢彼此时会忽略某人.该表有两列,它们是主键.

PK InitiatingUser
PK IgnoredUser
Run Code Online (Sandbox Code Playgroud)

当EF映射此表时,我收到此错误:

错误7错误3034:从第1467行,第1477行开始映射片段时出现问题:具有可能不同键的两个实体映射到同一行.确保这两个映射片段将AssociationSet的两端映射到相应的列.

我在xml编辑器中打开了edmx并导航到有问题的行.

          <MappingFragment StoreEntitySet="Ignores">
            <ScalarProperty Name="IgnoredUser" ColumnName="IgnoredUser" />
            <ScalarProperty Name="InitiatingUser" ColumnName="InitiatingUser" />
          </MappingFragment>
Run Code Online (Sandbox Code Playgroud)

我刚刚开始使用EF,我不明白发生了什么或问题可能是什么.

任何帮助表示赞赏.

编辑 忽略之间的关系曾经有外键将启动用户和被忽略的用户映射到用户表的主键(用户名).这就是我第一次将EF映射到此表时的情况.我已经删除了FK,看看是否会有所帮助,但事实并非如此.

Sha*_*una 28

这可能是由于在您的实体模型中包含了多对多连接表,或者EF认为是这样一个表(可能是诸如没有自己的自包含密钥但其身份已经组成的表)两个或多个外键).

所以,例如,假设您有以下表格:

  • 地址
  • PersonAddress(仅包含PersonID和AddressID)

在您的实体模型中,您应该只添加Person和Address.如果添加PersonAddress,则EF将抛出错误.根据此MSDN问答,EF将自动考虑联接表.

  • 正是我对模型的错误,我盲目地添加了数据库遗忘的所有表格,M:N关系由EF处理. (2认同)

Che*_*hev 5

我不知道这里有什么问题,但我刚从ORM中删除了表,然后DB用实际的ID列重新创建它,而不是两个主键.我重新映射了表,编译了,现在一切都很顺利.以我的方式做它会很方便,但是哦.

如果有人有任何见解让我知道.我宁愿接受别人的回答.