如何使用ADO.net Entity Framework正确加载对象引用

时间:2009-03-27 17:15:24

标签: c# linq entity-framework

我正在做什么,但这是错的,我知道。

    public Profile GetProfile(int id)
    {
        Profile profile = (
            from u in en.User where u.UserID == id 
                select u.Profile.FirstOrDefault()
            ).First();

        if (profile.UserReference.Value == null)
            profile.UserReference.Load();

        return profile;
    }

Profile.UserID是绑定到User.UserID的FK。因此,实体框架不会将Profile.UserID包含在实体模型中,这就是为什么我的linq查询首先查找User对象然后选择相关的Profile对象(这对我来说感觉很脏)。

任何人都可以提供更好的解决方案:

  1. 通过User.UserID查找Profile对象。
  2. 在返回的Profile对象中加载User对象引用。
  3. 提前致谢!

1 个答案:

答案 0 :(得分:4)

尝试使用Include方法

public Profile GetProfile(int id)
{
  return (from p in db.Profiles.Include("User")
          where p.User.UserId == id
          select p).FirstOrDefault();
}

此方法返回配置文件对象,并且已加载用户引用。