我有一个相对简单的术语表,每个术语可以有多个父母和子女,所以有一个TermAssociation表。
Term TermAssociation
---- ---------------
TermID ParentTermID
TermName ChildTermID
...
在EF中映射时,会生成与自身具有多对多关联的Term实体。一切都很酷。
问题是我在一个所有表更新必须通过存储过程的环境中工作。我可以对Term实体使用存储过程映射,但是如何将SP映射到TermAssociation表,因为它被建模为关联而不是实体?
答案 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
内添加AssociationSetMapping
。 InsertAssociation
是我的插入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>