Как изменить поле «Дискриминатор» (__Disc__), когда оно используется в качестве условия - PullRequest
1 голос
/ 29 декабря 2011

Мне нужно обновить и изменить поле таблицы Discriminator ( _ Disc _ ), в то время как сопоставленные сущности не имеют его как член сущности . любое решение?

1 Ответ

3 голосов
/ 29 декабря 2011

Столбец «Дискриминатор» используется для определения типа объекта в наследовании TPH, и EF не может его изменить - никогда.Это похоже на наследование в любом объектно-ориентированном языке - когда вы определяете объект некоторого типа, вы не можете сделать его другим типом - вы можете привести его только к родительскому, но он все равно будет экземпляром исходного типа.Единственный способ изменить его на другой тип - это создать новый экземпляр нового типа и каким-то образом скопировать значения из первого объекта в новый.

Поэтому, если вам нужно изменить дискриминатор, вы должны сделать это без EF =, используя старые ADO.NET и SQL, но если ваше изменение не будет следовать другим правилам в вашей модели сущности, вы нарушите функциональность EF, и ваше приложение будетне работа.

...