ТПТ и выпуск внешнего ключа - PullRequest
0 голосов
/ 29 июня 2010

У меня проблема с наследованием TPT + внешний ключ. Я работаю над веб-приложением с многоязыковой поддержкой, включая перевод динамического контента. Вот мои столы:

Language
=============
Id, Name


ProcessingAgent 
====================
Id, some other fields 

LocalizedProcessingAgent 
=========================================================
LocalizedProcessingAgentId, Name, Description, LanguageId

Как вы уже догадались, я переместил столбцы, которые должны быть переведены с ProcessingAgent на LocalizedProcessingAgent. Со стороны EF я сделал наследование TPT, поэтому ProcessingAgent является базовым классом LocalizedProcessingAgent. Я новичок в EF, это мой первый проект, на котором я остановился, и одно из его странных действий действительно смущает меня Когда я генерирую классы EF из БД, LocalizedProcessingAgent имеет язык свойств навигации (из-за LanguageId). Проблема в том, что свойство Language имеет значение null после того, как я запросил db:

LocalizedProcessingAgentRecord l = db.ProcessingAgents
    .OfType<LocalizedProcessingAgentRecord>().First(p => p.Id == 1);
//l.Language is null

Так что внешний ключ Navigation Property по какой-то причине не заполнен, я не знаю почему. Это происходит только тогда, когда я запрашиваю производные объекты, в данном случае LocalizedProcessingAgentRecord. Есть идеи?

вот разметка EF xml: http://dl.dropbox.com/u/3055964/ef.xml

1 Ответ

1 голос
/ 29 июня 2010

Вы должны явно загрузить это свойство Navigation.

db.ProcessingAgents.Include("Language").OfType().First(p => p.Id == 1)

Include приведет к быстрой загрузке свойства навигации.

...