实体框架不加载导航属性

本文关键字:导航 属性 加载 框架 实体 | 更新日期: 2023-09-27 18:24:17

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

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

我有两个班:

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和securityfile的对象。外键已设置。我确实通过简单的linq查询来访问这些元素:Db.UserProfile.FirstOrDefault(f => f.Username == username);,其中Db是我的数据上下文。

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

我是不是错过了什么?

实体框架不加载导航属性

我认为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; }
}