首先将具有多个主键列的实体框架代码一一映射
本文关键字:实体 框架 代码 映射 一一 | 更新日期: 2023-09-27 18:05:19
我有2个表,2个主键列。它们的结构是:
public class X
{
public int Id {get;set;}
public int line {get;set;}
}
public class Y
{
public int Id {get;set;}
public int line {get;set;}
}
它们是一对一的关系。
我如何在实体框架代码映射2表首先反映他们的关系?
表Y是可选的,但表X是必需的。
如果我理解对了,也许这就是你要找的:
public class X
{
[Key, ForeignKey("Y"), Column(Order=0)]
public int ID { get; set; }
[Key, ForeignKey("Y"), Column(Order=1)]
public int line { get; set; }
public virtual Y Y { get; set; }
}
public class Y
{
[Key, Column(Order=0)]
public int ID { get; set; }
[Key, Column(Order=1)]
public int line { get; set; }
public virtual X X { get; set; }
}
对于Key
属性,您说EF这些属性将是表的键。添加ForeignKey
属性,为EF提供信息,告诉它哪个导航属性表示它作为外键的关系。最后,Column
属性告诉EF X
的哪个属性应该匹配Y
上的哪个属性。如果我误解了你的问题,请告诉我,以便我修改我的答案。
public class X
{
[Key]
public int ID { get; set; }
public int line {get; set;}
public virtual Y Y { get; set; }
}
public class Y
{
[Key]
public int ID { get; set; }
public int line {get; set;}
public virtual X X { get; set; }
}
和添加配置,
modelBuilder.Entity<X>()
.HasOptional<Y>(u => u.ID)
.WithOptionalDependent(c => c.ID)
.Map(p => p.MapKey("ID"));