ASP.NET MVC 核心外键

Posted

技术标签:

【中文标题】ASP.NET MVC 核心外键【英文标题】:ASP.NET MVC Core foreign key 【发布时间】:2021-12-31 16:14:16 【问题描述】:

我有一个数据库优先的 asp.net mvc 核心项目,但我不确定如何使用外键。

[Table("tbUser")]
public class User

    [Key]
    [Column("UserID")]
    public int UserID  get; set; 

    [Column("RoleID")]
    public int RoleID  get; set; 

    [ForeignKey("RoleID")]
    public Role Role  get; set; 


[Table("tbRole")]
public class Role

    [Key]
    [Column("RoleID")]
    public int RoleID  get; set; 

    [Column("Role")]
    public string RoleName  get; set; 

    public ICollection<User> Users  get; set; 

所有属性都从我的数据库加载,但用户中的角色角色保持为空

【问题讨论】:

【参考方案1】:

从数据库加载时尝试添加.Include(u =&gt; u.Role)。这类似于 SQL JOIN

https://www.entityframeworktutorial.net/efcore/querying-in-ef-core.aspx

【讨论】:

谢谢!另外这些之间有什么区别,为什么第二个不起作用? var list = context.Users .Include(u =&gt; u.Role) .ToList(); return list var query = from u in context.Users join r in context.Roles on u.RoleID equals r.RoleID select u; var users = query.ToList&lt;User&gt;(); return users 在第二个中,您只是选择用户 (select u) 而不更改 User 上的 Role 属性。 Include() 自动执行此操作。

以上是关于ASP.NET MVC 核心外键的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core MVC POST 方法一个具有外键 ID 的模型

如何从 ASP.NET 核心 mvc 向 asp.net 核心中的 Web API 发出 PUT 请求?

解读ASP.NET 5 & MVC6系列:核心技术与环境配置

Asp.NET MVC 核心 CORS

核心ASP.NET

用于引导切换的 asp.net 核心 mvc 标签助手