1

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

先谢谢了。

4

2 回答 2

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。如果我误解了您的问题,请告诉我,以便我更改答案。

于 2013-03-25T05:13:34.313 回答
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"));
于 2013-03-21T11:40:24.567 回答