急切地加载子类型特定实体

时间:2011-02-11 11:46:55

标签: asp.net-mvc-2 entity-framework-4

SubFoo是Foo的子类型,但只有Bar显示导航属性Bar。所以

DB.Foos.Include('Bar')

生成

  

指定的包含路径无效。 EntityType'Foo'不会声明名为'Bar'的导航属性。

我该怎么办? (除了明显将Bar移到Foo之外)

2 个答案:

答案 0 :(得分:1)

一种方法是投射

var q = from f in DB.Foos
        let b = (f as SubFoo).Bar
        select new
        {
            Foo = f,
            Bar = b
        };
 return q.AsEnumerable().Select(q => q.Foo);

答案 1 :(得分:1)

怎么样:

DB.Foos.OfType<SubFoo>().Include("Bar")

如果你想通过Foos(不仅是SubFoos)进行一般查询而且所有SubFoos都必须加载Bar,这不起作用..