Entity Framework Core:通过导航属性组合主键

问题描述

给定以下类:

ART

使用 Entity Framework Core(代码优先),我想将其映射到下表:

表人:

列名 数据类型 主键 外键
身份证 内部 没有
姓名 varchar(max) 没有 没有

表亲权:

列名 数据类型 主键 外键
父母ID 内部
儿童ID 内部
类型 内部 没有 没有
日期 日期时间 没有 没有

使表 public class Person{ public int ID { get; set;} public string Name { get; set;} public List<Parentship> parentChildRelations { get; set; } } public class Parentship{ public Person Parent { get; set; } public Person Child { get; set; } public string RelationshipType { get; set; } public Datetime date { get; set; } 具有复合主键 (Parentship,ParentID),其中这些列本身是表 ChildID 的外键。

我尝试了类似的方法,但它不起作用,因为它在 PM 控制台中显示以下错误消息:“当前的数据库提供程序不支持属性 'Parentship.Parent' 的类型为 'Person'。更改属性 CLR 类型,或使用 '[NotMapped]' 特性或使用 'OnModelCreating' 中的 'EntityTypeBuilder.Ignore' 忽略该属性。”。 有人知道如何通过 Fluent API 解决这个问题吗?

Person

解决方法

请尝试添加索引值并将其设置为非聚集索引

entity.HasIndex(p => new { p.Parent.ID,p.Child.ID})
                    .HasName("some_name_for_index")
                    .ForSqlServerIsClustered(false);