EF无关系的导航属性(外键)

问题描述 投票:0回答:1

我有三堂课

public class Country
{
        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public byte CountryID { get; set; }
        public byte OfficialLangID { get; set; }
}

public class Language
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public byte LangID { get; set; }
}

public class Name
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public byte NameID { get; set; }
    public bool isLanguage { get; set; } // true for language - false for country
    public byte FK { get; set; } // FK=LangID or CountryID
}

现在我要创建导航属性:

  • 国家名称
  • Language.Name
  • 名称。语言
  • 名称国家/地区
entity-framework-core foreign-keys ef-code-first composite-key ef-code-first-mapping
1个回答
0
投票

为什么要这样做?在这里放一个布尔字段来检查实体的类型没有任何意义吗?最后,ef框架将创建2个表。这是我的方法:

public class Country
{
        public byte Id {get;set;}
        public string Name {get;set;}

        public int LanguageId {get;set;}
}

public class Language
{
    public byte Id {get;set;}
    public string Name {get;set;}

    // assuming that each language may have one or many countries
    public ICollection<Country> Countries {get;set;}
}

ef核心将在此处自动创建表和关系。现在,如果您看到一些重复的代码(如我所理解的),则这两个实体使用相同的字段类型和名称,这是您可以执行的操作

public abstract class EntityBase
{
        public byte Id {get;set;}
        public string Name {get;set;}
}

现在将此抽象类继承到实体类

public class Country : EntityBase
{
        public int LanguageId {get;set;}
}

public class Language : EntityBase
{
    public ICollection<Country> Countries {get;set;}
}
© www.soinside.com 2019 - 2024. All rights reserved.