如何在实体框架类中引用两个用户(每个用户具有不同的角色)



我有一个实体与 AspNetUsers 表中的两个用户相关:

  1. 具有租户角色的用户
  2. 具有房东角色的用户
  3. 属性(使用实体框架创建(

在我的财产上下文中创建外键关系时,我无法弄清楚如何将 1 个租户和 1 个房东与 1 个属性相关联。为此,我需要在我的属性类中实现两个外键,但它们都是来自 Identity 的用户 ID。这似乎不对,我无法理解它。下面是我的 Property.cs 文件的开头

public class Property
{
    [ScaffoldColumn(false)]
    public string PropertyID { get; set; }
    [Key, ForeignKey("User")]
    public string LandlordId { get;set; }
    [Key, ForeignKey("User")]
    public string TenantId { get;set; }
    //other fields
    public virtual ApplicationUser User { get;set; }
}

有两种方法可以执行此操作:

  1. 保留当前模型,并确保正确设置导航属性:

    public class Property
    {
        public int PropertyId { get; set; }
        public int TenantId { get; set; }
        public int LandlordId { get; set; }
        public User Tenant { get; set; }
        public User Landlord { get; set; }
    }
    

    请注意,由于这正确遵循了配置约定,因此无需应用 [ForeingKey]

  2. 这将代表您的应用程序中更大的变化。您需要引入一个Landlord和一个Tenant实体:

    public class Landlord
    {
        ...
        public int UserId { get; set; }
        public User User { get; set }
    }
    public class Tenant
    {
        ...
        public int UserId { get; set; }
        public User User { get; set }
    }
    

    然后将这些映射到Property实体:

    public class Property
    {
        public int PropertyId { get; set; }
        public int TenantId { get; set; }
        public int LandlordId { get; set; }
        public Tenant Tenant { get; set; }
        public Landlord Landlord { get; set; }
    }
    

现在,哪种方法在您的业务领域和此应用程序中更有意义,由您决定。

相关内容

  • 没有找到相关文章

最新更新