У меня проблема с наследованием 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