如何在多对多实体关系中扩展由 EF-Core-5 生成的连接表中的属性

时间:2021-03-11 20:20:59

标签: c# entity-framework-core model-associations ef-core-5.0

我刚刚使用 ASP、Net Core 5 和 EF Core 5 创建了一个应用程序。它需要两个实体 - Bill 和 User 之间的多对多关系。这样一个用户可以有很多账单,一个账单可以适用于很多用户。

User{
  public string Id{get; set;}
  public ICollection<Bill> Bills {get; set;}
}

Bill{
  public int Id{get; set;}
  public ICollection<User> Users {get; set;}
}

使用 EF Core 5,我了解到我应该能够忽略 UserBill 的连接表,其中包含两个实体的 ID 和每个其他实体的导航属性。但是,我希望确保给定用户不会发生两次账单。

UserBill{
  public string UserId{get; set;}
  public User Payer{get; set;}

  public int BillId{get; set;}
  public Bill Bill {get; set;}
}

所以我想修改连接表如下:

  1. 向连接表添加唯一约束,但由于连接表是由 EF Core 自动生成的,我正在寻找一种方法将此唯一约束添加到连接表

  2. 向连接表添加其他属性。例如,我需要在连接表中添加 PaymentStatus 以指示是否已支付帐单以及其他必要的属性

    UserBill{
    public int Id {get; set;}
    
    public string UserId{get; set;}
    public User Payer{get; set;}
    
    public int BillId{get; set;}
    public Bill Bill {get; set;}
    public PaymentStatus Status {get; set;}
    

    }

这里我现在需要添加唯一约束以确保不能多次出现

<块引用>

用户 ID、账单 ID

我们将不胜感激。谢谢。

0 个答案:

没有答案