代码之家  ›  专栏  ›  技术社区  ›  littlelion111

如何将Linq用于外键

  •  0
  • littlelion111  · 技术社区  · 1 年前

    我正在尝试创建一个表,显示基于所选程序的所有用户。

    程序:Id(键),程序(字符串) ProgramUsers:Id(密钥),用户名,程序(外键),programaccess

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

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

    当然,因为b.程序是一个int和clientInput。程序是字符串,这不起作用。有人能帮帮我吗?

    1 回复  |  直到 1 年前
        1
  •  0
  •   Yong Shun    1 年前
    1. 这个 ProgramUsers 类需要一个 ProgramId 属性和 Program 引用属性。

    2. 这个 程序 需要一个 程序用户 集合导航属性。

    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; }
    }
    

    在中配置 Fluent API 如果您正在使用实体框架核心:

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

    并获取的相关实体 程序用户 在查询中,假设您正试图通过程序名称获取程序用户:

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

    参考: Data Annotations - ForeignKey Attribute in EF 6 & EF Core