如何使用 Linq 获取外键

问题描述 投票:0回答:1

我正在尝试创建一个表格,根据所选程序显示所有用户。

程序:Id(键),程序(字符串) 程序用户:Id(密钥)、用户名、程序(外键)、程序访问权限

客户端输入:程序(字符串)

var programUsers = context.ProgramUsers
                     .Include("Program")
                     .Where(b=>b.Program == clientInput.Program)
                     .ToList();

当然,由于 b.Program 是 int 而 clientInput.Program 是 string 这是行不通的。有人可以帮我吗?

c# linq
1个回答
0
投票
  1. ProgramUsers
    类需要一个
    ProgramId
    属性和一个
    Program
    引用属性。

  2. Program
    需要一个
    ProgramUsers
    集合导航属性。

using System.ComponentModel.DataAnnotations.Schema;

public class ProgramUsers
{
    public int Id { get; set; }
    public string Username { get; set; }

    [ForeignKey("Program")]
    public int ProgramId { get; set; }

    public Program Program { get; set; }
}

public class Program
{
    public int Id { get; set; }

    [Column("Program")]
    public string ProgramName { get; set; }

    public ICollection<ProgramUser> ProgramUsers { get; set; }
}

如果您使用的是 Entity Framework Core,请在 Fluent API 中进行配置:

modelBuilder.Entity<ProgramUsers>()
            .HasRequired<Program>(x => x.Program)
            .WithMany(g => g.Students)
            .HasForeignKey<int>(x => x.ProgramId); 

参考:数据注释 - EF 6 和 EF Core 中的外键属性

© www.soinside.com 2019 - 2024. All rights reserved.