Как сохранить производный тип (TPT) в Entity Framework? - PullRequest
1 голос
/ 22 апреля 2010

У меня проблемы с сохранением производного типа (TPT) с Entity Framework в базу данных.

Допустим, у меня есть базовый объект Animal и производный тип Dog.

Я хочу сохранить объект Dog.

Я думал, что мог бы сделать это как contex.AddToDogs(), но контекст содержит только базовую сущность - Животное.Таким образом, я могу сохранить только объект Animal - contex.AddToAnimals().

Я также пытался использовать contex.AddObject("Animals", dogInstance), но получаю следующую ошибку:

The member with identity 'NavigationProperty' does not exist in the metadata collection.

НоЯ добавил EntityReference в "NavigationProperty".

Так как сохранить производный тип в EF?

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Ответ contex.AddObject("Animals", dogInstance).

Первоначально я получил сообщение об ошибке, но просто говорит, что НЕ имя свойства навигации неверно, а имя набора сущностей неверно. И это действительно было. Поэтому я исправляю это, и теперь сохранение работает должным образом (собака сохраняется на животном и на столе собаки).

0 голосов
/ 06 марта 2013

Если собачьих сущностей нет, у вас не будет метода AddToDogs (), независимо от того, какие ссылки вы добавляете, EF не знает, как автоматически сопоставлять производные типы с сущностями. Вы можете создать функцию, которая отображает один объект на другой, или использовать такой инструмент, как AutoMapper

Если я воспринимаю ваш вопрос слишком буквально, а вы используете подход, основанный на коде, тогда для объяснения наследования и ассоциации в EF посмотрите это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...