代码之家  ›  专栏  ›  技术社区  ›  Emirhan Ay

用实体框架建立两个实体之间的关系

  •  0
  • Emirhan Ay  · 技术社区  · 2 年前

    我在C#中有一个windows窗体应用程序项目。我使用的是ORM工具,即实体框架。我是EF的初学者。我有两个实体(机器、用户) 一个用户可以有多台机器,但一台机器不能有多个用户。我想建立这样的关系。但现在我的类只有id和name属性。 我在当前状态下创建的类结构不适合我提到的任务,因为没有关系。

       internal class Machine
       {
           [Key]
           public int id { get; set; }
           public string name { get; set; }         
       }
    
      internal class User
      {
          [Key]
          public int id { get; set; }
          public string name { get; set; }    
      }
    

    要建立我提到的关系,我需要创建什么类结构?

    2 回复  |  直到 2 年前
        1
  •  1
  •   Abdalhmeed Shishani    2 年前

    我就是这么做的

    internal class Machine
       {
           [Key]
           public int id { get; set; }
           public string name { get => name; set => name = value; }     
           Public User User {get; set;}    
       }
    
    
    internal class User
      {
          [Key]
          public int id { get; set; }
          public string name { get => name; set => name = value; }
          Public List<Machine> Machines {get; set;}
      }
    

    然后添加迁移[命名迁移]

    类似:添加迁移一对多关系用户机器 并更新数据库

        2
  •  1
  •   marc_s MisterSmith    2 年前

    首先,你必须了解你想要达到的目标。

    一个用户可以有多台计算机,但一台计算机不能有多个用户

    这被称为一对多关系。

    现在,在EntityFramework中有两种方法可以实现这一点,您可以通过在模型上放置正确的属性来实现,也可以在 OnModelCreating 方法。

    以下是您的模型应该是什么样子:

    internal class Machine
    {
       [Key]
       public int id { get; set; }
       public string name { get; set; }
       public int UserId { get; set; }  
       public User User { get; set; }
    }
    
    internal class User
    {
       [Key]
       public int Id { get; set; }
       public string Name { get; set; }
       public ICollection<Machine> Machines { get; set; }
    }
    

    OnModel创建 方法(对于像这样的非复杂结构来说不是必需的),您将添加这些行

    modelBuilder.Entity<User>()
        .HasMany(e => e.Machines)
        .WithOne(e => e.User)
        .HasForeignKey(e => e.UserId);
    

    来自Microsoft文档的参考: https://learn.microsoft.com/en-us/ef/core/modeling/relationships/one-to-many

    推荐文章