2012-10-07 150 views
7

我将我的实体框架4.3数据库第一个项目升级到新的实体框架5. 显然,我现在使用DbContext而不是ObjectContext。 实体框架LoadProperty 5

我用新的替换了旧的.edmx文件。我的老业务代码,以前用我的4.3 .edmx文件,现在有使用LoadProperty方法的代码的问题:

using (var context = new MyEntities()) 
{ 
    Models.User user = context.Users.First(x => x.GUID == guid); 
    context.LoadProperty(user, o => o.Settings); 
    return user; 
} 

似乎LoadProperty不在的DbContext的有效手段。

无论如何,我怎样才能获得强大的类型加载?

我想我可以用

context.Users.Include("Settings") 

,但不是强类型和容易拼写错误。

+1

你没有使用EF4.3如果你使用ObjectContext - EF4.3基本上都是关于DbContext的......如果启用延迟加载,你可以直接使用.Settings属性而不必显式加载它。请注意,它可能会触发数据库之旅,所以如果您经常这样做,使用.Include()如下所示可能会更便宜。 – Pawel

+0

@Pawel:哦,对不起。我读了一个关于更新后遇到的另一个问题的问题,并用“apprently”引用它来更好地描述我的情况。我通过了这句话。 – citronas

回答

15

您也可以对Lambda使用Include方法。 不要忘了using语句,因为这包括来自DbExtension类:

using System.Data.Entity; 

...

context.Users.Include(u => u.Settings); 

这里是关于包括扩展方法的一些信息:msdn info

+0

太棒了!正是我在找什么!我希望你的回答能帮助其他人解决同样的问题 – citronas

+0

史诗扩展我必须说。这是强烈的,因为它是强类型。 –