【问题标题】:LoadProperty in Entity Framework 5实体框架 5 中的 LoadProperty
【发布时间】:2012-09-28 02:18:36
【问题描述】:

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

我已将旧的 .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")

但这不是强类型,容易出现拼写错误。

【问题讨论】:

  • 如果您使用了 ObjectContext,那么您没有使用 EF4.3 - EF4.3 基本上都是关于 DbContext... 如果启用了延迟加载,您可以使用 .Settings 属性而无需显式加载它。请注意,它可能会触发对数据库的访问,因此如果您经常这样做,使用 .Include() 可能会更便宜,如下所示。
  • @Pawel:哦,对不起。我阅读了一个关于我在更新后遇到的另一个问题的问题,并用“显然”引用了它以更好地描述我的情况。我把那句话删掉了。

标签: c# asp.net entity-framework entity-framework-5


【解决方案1】:

您也可以在 Lambda 中使用 Include 方法。 不要忘记 using 语句,因为这个 Include 来自 DbExtension 类:

using System.Data.Entity;

...

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

这里有一些关于 Include 扩展方法的信息:msdn info

【讨论】:

  • 太棒了!正是我想要的!我希望你的回答能帮助其他有同样问题的人
  • 我必须说的史诗扩展。这很棒,因为它是强类型的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多