实体框架6有问题。
迁移将生成带下划线的其他foreignkey。
我有一张供人和亲戚用的table
人员表
身份证件
名称
personrelative表
身份证件
拟人
相对ID(人员类型)
关系(附加表,用于确定此人与其亲属之间的关系。)
首先使用代码,实体框架迁移为personid添加了一个额外的外键,它是personid。
基本上,personrelative表有:
身份证件
拟人
相对
关系
人员id
这是生成的代码:
CreateTable(
"dbo.PersonRelatives",
c => new
{
Id = c.Int(nullable: false, identity: true),
Relationship = c.string(nullable: false),
PersonId= c.Int(nullable: false),
RelativeId= c.Int(nullable: false),
Person_Id= c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Persons", t => t.PersonId, cascadeDelete: true)
.ForeignKey("dbo.Persons", t => t.RelativeId, cascadeDelete: true)
.ForeignKey("dbo.Persons", t => t.Person_Id)
.Index(t => t.PersonId)
.Index(t => t.RelativeId)
.Index(t => t.Person_Id);
我的personrelative实体模型:
public class PersonRelative
{
public int Id { get; set; }
public string Relationship{ get; set; }
[ForeignKey("Person")]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int PersonId{ get; set; }
public Person Person { get; set; }
[ForeignKey("Relative")]
public int RelativeId { get; set; }
public Person Relative { get; set; }
}
2条答案
按热度按时间1wnzp6jl1#
我通过将此代码(参见下面的代码片段)添加到我的dbcontext onmodelcreating中,成功地解决了我的问题。
借助本文档:https://docs.microsoft.com/en-us/ef/ef6/modeling/code-first/fluent/relationships#configuring-复合外键
感谢@giovanni为我指明了正确的方向。
我的个人相关类:
我的个人类:
ql3eal8s2#
你可以试着重写
OnModelCreating
在你的DbContext
手动指定关系。请在此处阅读有关键和关系的更多信息:https://docs.microsoft.com/en-us/ef/core/modeling/relational/fk-constraints