具有继承类的实体框架核心模型构建器

时间:2020-06-15 21:41:57

标签: c# entity-framework-core

如何在Entity Framework Core 3.1的模型生成器中使用继承的类?

这是我的基础课:

public class Company
{
    public Company()
    {
        Addresses = new List<Address>();
        Contacts = new List<Contact>();
    }

    [Required]
    public string Code { get; set; }

    [Required]
    [StringLength(50)]
    public string FullName { get; set; }

    [DataType(DataType.Url)]
    public string WebsiteURL { get; set; }

    public ICollection<Address> Addresses { get; set; }

    public ICollection<Contact> Contacts { get; set; }
}

这是我的类,它是从is继承的:

public class Organisation : Company 
{
    public Organisation() : base()
    {

    }

    public string OrganisationMasterCode { get; set; } = $"Something unique"; 
}

这是我的模型构建器,由于无法访问地址和联系人,因此无法使用:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // Company is fine:
    modelBuilder.Entity<Company>().HasMany(i => i.Addresses).WithOne(i => i.Company);
    modelBuilder.Entity<Company>().HasMany(i => i.Contacts).WithOne(i => i.Company);

    // Below i.Organisation does not work
    modelBuilder.Entity<Organisation>().HasMany(i => i.Addresses).WithOne(i => i.Organisation);
    modelBuilder.Entity<Organisation>().HasMany(i => i.Contacts).WithOne(i => i.Organisation);
}

ModelContext.cs(61,90):[CS1061]“地址”不包含“组织”的定义,并且无法找到接受“地址”类型的第一个参数的可访问扩展方法“组织”缺少using指令或程序集引用?)

ModelContext.cs(62,89):[CS1061]“联系人”不包含“组织”的定义,并且无法找到接受类型为“联系人”的第一个参数的可访问扩展方法“组织”缺少using指令或程序集引用?)

0 个答案:

没有答案