如何解决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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。