多对多关联的存储过程映射

时间:2014-12-11 17:06:49

标签: sql-server entity-framework entity-framework-6.1

我有一个相对简单的术语表,每个术语可以有多个父母和子女,所以有一个TermAssociation表。

Term          TermAssociation
----          ---------------
TermID        ParentTermID
TermName      ChildTermID
...

在EF中映射时,会生成与自身具有多对多关联的Term实体。一切都很酷。

enter image description here

问题是我在一个所有表更新必须通过存储过程的环境中工作。我可以对Term实体使用存储过程映射,但是如何将SP映射到TermAssociation表,因为它被建模为关联而不是实体?

1 个答案:

答案 0 :(得分:0)

我还没有找到通过设计器执行此操作的方法,但是如果直接编辑edmx文件的XML,则可以。找到关联集映射:

<AssociationSetMapping Name="TermAssociation" TypeName="TCPDataDictionaryModel.TermAssociation" StoreEntitySet="TermAssociation">
  <EndProperty Name="Term">
    <ScalarProperty Name="TermId" ColumnName="ParentTermId" />
  </EndProperty>
  <EndProperty Name="Term1">
    <ScalarProperty Name="TermId" ColumnName="ChildTermId" />
  </EndProperty>
</AssociationSetMapping>

然后在ModificationFunctionMapping内添加AssociationSetMappingInsertAssociation是我的插入SP,需要@ParentTermId@ChildTermId作为参数。

<ModificationFunctionMapping>
  <InsertFunction FunctionName="TCPDataDictionaryModel.Store.InsertAssociation" >
    <EndProperty Name="Term">
      <ScalarProperty Name="TermId" ParameterName="ParentTermId" />
    </EndProperty>
    <EndProperty Name="Term1">
      <ScalarProperty Name="TermId" ParameterName="ChildTermId" />
    </EndProperty>
  </InsertFunction>
</ModificationFunctionMapping>