微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。