我有一個關於EF6的問題。比方說,我有一個抽象基類,看起來像這樣:C#EF6代碼優先TPH - 導航屬性給兩個使用註釋的同一個實體的實體
[Table("Persons")]
public abstract class Person
{
[Key]
public int Id { get; set; }
[Required, ForeignKey("Group")]
public int GroupId { get; set; }
[Required(AllowEmptyStrings = true), MaxLength(150)]
public string FirstName { get; set; }
[Required(AllowEmptyStrings = true), MaxLength(150)]
public string LastName { get; set; }
}
然後,有繼承Person
兩個實體:
[Table("Persons")]
public class Teacher : Person
{
[Required]
public int ExpirienceInYears { get; set; }
}
[Table("Persons")]
public class Student : Person
{
[Required]
public int Age { get; set; }
}
也就是說在這裏所有爲我好。我們有一些TPH,這就是爲什麼我們有一個Discriminator列。 OK,不錯,但我的問題是表Groups
女巫的導航屬性其實是這樣的:
[Table("Groups")]
public class Group
{
[Key]
public int Id { get; set; }
[Required(AllowEmptyStrings = true), MaxLength(150)]
public string Name { get; set; }
public virtual ICollection<Teacher> Teachers { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
好像導航性能是負責在表者兩列的生成被命名爲:Group_Id
並且Group_Id1
女巫總是空的。我不需要這個列,因爲在這個表中已經有一列GroupId
,指向Groups
。此外導航屬性不工作,所以我認爲我做錯了什麼。
表Persons
樣子:
Id | GroupId | FirstName | LastName | ExpirienceInYears | Age | Discriminator | Group_Id | Group_Id1
,但我想這個表看起來像:
Id | GroupId | FirstName | LastName | ExpirienceInYears | Age | Discriminator
如果刪除了導航性能一切正常,但我很想讓他們因爲它們非常方便。有任何想法嗎?