2014-12-11 2 views
0

У меня есть относительно простая таблица терминов, и каждый термин может иметь несколько родителей и детей, поэтому существует таблица TermAssociation.Отображение хранимых процедур для ассоциации «многие-ко-многим»

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

При сопоставлении в EF это создает объект Term с ассоциацией «многие-ко-многим» с самим собой. Все круто.

enter image description here

Проблема в том, я работаю в среде, где все обновления таблиц должны пройти через хранимые процедуры. Я могу использовать отображение хранимых процедур только для объекта Term, но как мне сопоставить SP с таблицей TermAssociation, поскольку он моделируется как ассоциация, а не сущность?

ответ

0

Я не нашел способ сделать это через конструктор, но это возможно, если вы напрямую отредактируете XML-файл edmx. Найти ассоциации установить отображение:

<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>