当存在实体时,“违反多重性约束”

时间:2012-05-24 14:48:04

标签: entity-framework

给定两个实体ProcessTemplateOperation和ProcessTemplateMetaInformation,关系为1到0..1

当我添加一个进程ProcessTemplateMetaInformation的ProcessTemplateOperation时,我在Context.ApplyChanges中得到以下错误(在EF中,它在AddHelper.AddAllEntities:context.AddObject中)

违反了多重性约束。角色'ProcessTemplateOperation'的关系 '... FK_ProcessTemplateOperation_MetaInformation'具有多重性1或0..1。

保留在EntityFramework代码中的调试器表示Operation具有Metainformation,因此它不会丢失。

RelationShip的定义是

      <AssociationSet Name="FK_ProcessTemplateOperation_MetaInformation" Association="FireStartDBModel.Store.FK_ProcessTemplateOperation_MetaInformation">
        <End Role="ProcessTemplateOperation" EntitySet="ProcessTemplateOperation" />
        <End Role="ProcessTemplateMetaInformation" EntitySet="ProcessTemplateMetaInformation" />
      </AssociationSet>

    <Association Name="FK_ProcessTemplateOperation_MetaInformation">
      <End Role="ProcessTemplateOperation" Type="FireStartDBModel.Store.ProcessTemplateOperation" Multiplicity="1">
        <OnDelete Action="Cascade" />
      </End>
      <End Role="ProcessTemplateMetaInformation" Type="FireStartDBModel.Store.ProcessTemplateMetaInformation" Multiplicity="0..1" />
      <ReferentialConstraint>
        <Principal Role="ProcessTemplateOperation">
          <PropertyRef Name="Id" />
        </Principal>
        <Dependent Role="ProcessTemplateMetaInformation">
          <PropertyRef Name="Id" />
        </Dependent>
      </ReferentialConstraint>
    </Association>

      <AssociationSet Name="FK_ProcessTemplateOperation_MetaInformation" Association="FireStartDBModel.FK_ProcessTemplateOperation_MetaInformation">
        <End Role="ProcessTemplateOperation" EntitySet="BaseOperation" />
        <End Role="ProcessTemplateMetaInformation" EntitySet="BaseMetaInformation" />
      </AssociationSet>

ProcessTemplateOperation中有一个NavigationProperty,但ProcessTemplateMetaInformation上没有Navigation属性。

我们正在使用TPC,ProcessTemplateOperation有一个Base类BaseOperation和一个派生类ProcessOperation ......

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我们解决了这个问题。

我们有一些正在运行的Navigationproperties。

我们删除了它们,现在一切正常!