首先使用多个主键列实体框架代码一对一映射

时间:2013-03-21 11:36:06

标签: c# linq entity-framework code-first

我有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是必需的。

先谢谢。

2 个答案:

答案 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"));