创建复合密钥EF核心

时间:2020-04-16 10:51:51

标签: c# entity-framework entity-framework-core ef-code-first

我尝试创建复合键EF Core,并在Person表中有1个与表TypeOfPlace的关系和2个与1个关系的关系,它是id。它是应该在其中作为组合键的表:

public class RankingOfFriend : BaseEntity
{
    [Required]
    public int Mark { get; set; }
    [Required]
    public System.DateTime DateTimeOfAdding { get; set; }

    [Required]
    public int TypeOfPlaceId { get; set; }
    public TypeOfPlace TypeOfPlace { get; set; }

    [Required]
    [ForeignKey("Person")]
    public int PersonId { get; set; }
    public Person Person { get; set; }

    [Required]
    [ForeignKey("Person1")]
    public int FriendId { get; set; }
    public Person Person1 { get; set; }
}

是桌子人:

    [InverseProperty("Person")]
    public ICollection<RankingOfFriend> RankingOfFriends { get; set; }

    [InverseProperty("Person1")]
    public ICollection<RankingOfFriend> RankingOfFriends1 { get; set; }
    public Person()
    {
        RankingOfFriends = new List<RankingOfFriend>();
        RankingOfFriends1 = new List<RankingOfFriend>();
    }

我有这个方法:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<RankingOfFriend>().HasKey(table => new { table.PersonId, table.FriendId, table.TypeOfPlaceId });}

我认为使用TypeOfPlace一切都很好,但是通过2种关系我有一些问题

无法确定类型为“ ICollection”的导航属性“ Person.RankingOfFriends1”表示的关系。可以手动配置关系,也可以使用“ [NotMapped]”属性或“ OnModelCreating”中的“ EntityTypeBuilder.Ignore”忽略此属性。

0 个答案:

没有答案