我有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是必需的。
先谢谢。
答案 0 :(得分:1)
如果我理解正确,也许这就是你要找的东西:
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
上的哪个属性匹配。如果我误解了你的问题,请告诉我,以便我可以改变我的答案。
答案 1 :(得分:0)
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"));