实体框架不加载导航属性
本文关键字:导航 属性 加载 框架 实体 | 更新日期: 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; }
}