实体框架不加载导航属性

发布于 2025-01-04 14:49:20 字数 1005 浏览 2 评论 0原文

我在我的一个项目中使用 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 是我的数据上下文。

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

我错过了什么吗?

I am using EF with POCO for one of my projects.

The data context and pocos have been created successfully and I can fetch the data. There is one problem: the navigation properties are always null.

I've got these two classes :

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>();

}

}

The database contains objects from userprofile and securityrole. The foreign keys are set. I do access those elements by the simple linq query : Db.UserProfile.FirstOrDefault(f => f.Username == username); where Db is my datacontext.

The whole user profile object will have data but the navigation property SecurityRole is always null.

Am I missing something ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

じ违心 2025-01-11 14:49:20

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

}

I think the way EF code first works you should have the Id property on youur SecurityRole class as SecurityRoleId or something or apply a [Key] attribute to it. It should work then

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

}

or

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文