#entity-framework #entity-framework-4.1
#entity-framework #entity-framework-4.1
Вопрос:
В настоящее время у меня есть иерархия классов, определенная с помощью подхода Code First следующим образом.
E.F. автоматически сгенерировал дискриминатор nvarchar(128). Это не ключевое поле.
Как Entity Framework определяет, каким и какого типа должно быть поле дискриминатора, и всегда ли оно одинаковое, т.Е. nvarchar? Доступен ли дискриминатор вообще вне базы данных, т.Е. Из LINQ в Entity?
Ответ №1:
Столбец дискриминатора по умолчанию является nvarchar, потому что в нем хранятся имена ваших классов, которые различаются между типами — в этом весь смысл этого столбца: чтобы EF знал, какой экземпляр класса из вашей иерархии наследования он должен создать, когда он загружает запись из базы данных.
Столбец дискриминатора недоступен для linq-to-entities. Он используется только для сопоставления записи с правильным типом.
Комментарии:
1. Тогда можно ли с уверенностью сказать, что мы можем определить значение столбца дискриминатора, просто получив свойство Name типа экземпляра объекта?