TPT和外键问题

时间:2010-06-29 14:05:35

标签: c# entity-framework entity

我的TPT继承+外键有问题。我正在开发一个支持多语言的Web应用程序,包括翻译动态内容。 这是我的表格:

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


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

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

正如您已经猜到的那样,我移动了应从ProcessingAgent转换为LocalizedProcessingAgent的列。在EF方面,我进行了TPT继承,因此ProcessingAgentLocalizedProcessingAgent的基类。 我是EF的新手,这是我继续前进的第一个项目,其中一个奇怪的行为让我很困惑。 当我从DB生成EF类时,LocalizedProcessingAgent具有导航属性语言(因为LanguageId)。问题是在查询db:

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

所以外键导航属性由于某种原因没有填充,我不知道为什么。 只有在我查询派生实体时才会发生这种情况,在本例中为LocalizedProcessingAgentRecord。 有什么想法吗?

这是EF xml标记:http://dl.dropbox.com/u/3055964/ef.xml

1 个答案:

答案 0 :(得分:1)

您应该显式加载此Navigation属性。

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

Include将导致急切加载导航属性。