实体框架不加载导航属性

时间:2012-02-10 17:57:53

标签: c# entity-framework poco

我在我的一个项目中使用EF和POCO。

已成功创建数据上下文和pocos,我可以获取数据。有一个问题:导航属性始终为空。

我有这两个课程:

public class UserProfile {

public string Username { get; set; }
public int RoleId { get; set; }
public virtual SecurityRole SecurityRole { get; set; }

}

public class SecurityRole {

public int roleId { get; set; }
public string RoleDescription { get; set; }

}

public class DataContext : ObjectContext {

public ObjectSet<UserProfile> UserProfiles { get; set; }
public ObjectSet<SecurityRole> SecurityRoles { get; set; }

public DataContext() : base("name=datacontext_entities", "datacontext_entities") {

UserProfiles = CreateObjectSet<UserProfile>();
SecurityRole = CreateObjectSet<SecurityRole>();

}

}

数据库包含来自userprofile和securityrole的对象。外键已设置。我通过简单的linq查询访问这些元素:Db.UserProfile.FirstOrDefault(f => f.Username == username);其中Db是我的datacontext。

整个用户配置文件对象将包含数据,但导航属性SecurityRole始终为null。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我认为EF代码首次运行的方式你应该将你的SecurityRole类的Id属性作为SecurityRoleId或其他东西或应用[Key]属性。它应该工作

public class SecurityRole 
{
    [Key]
    public int roleId { get; set; }
    public string RoleDescription { get; set; }

}

public class SecurityRole 
{
    public int SecurityRoleId { get; set; }
    public string RoleDescription { get; set; }

}