Entity Framework 4.1 Сначала код: как определяется дискриминатор?

#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 типа экземпляра объекта?