EF基于两列

时间:2018-01-25 17:24:45

标签: c# asp.net .net entity-framework data-annotations

我完全迷失了。我有两张表,让他们说FooBar他们通过两列连接。我试图在EF中实现代码优先,数据表示,但我不确定我是否正确执行了。这是我的解决方案:

public class Foo
{
    [Key, Column("foo1Id", Order = 0)]
    public int Foo1Id { get; set; }
    [Key, Column("foo2Id", Order = 1)]
    public int Foo2Id { get; set; }

    [Column("description"), MaxLength]
    public string Description { get; set; }

    [ForeignKey("foo1Id")]
    public Bar Bar1 { get; set; }
    [ForeignKey("foo2Id")]
    public Bar Bar2 { get; set; }
}

public class Bar
{
    [Key, Column("barId", Order = 0)]
    public int BarId { get; set; }

    [Column("foo1Id")]
    public int Foo1Id { get; set; }
    [Column("foo2Id")]
    public int Foo2Id { get; set; }

    [Column("description"), MaxLength]
    public string Description { get; set; }

    [InverseProperty("Bar1")]
    public ICollection<Foo> Foos { get; set; }
    [InverseProperty("Bar2")]
    public ICollection<Foo> Foos1 { get; set; }        
}

经过几个小时的失败后,我从自动生成POCO的工具中得到了这个解决方案。我不确定这是否正确。

我很困惑,因为..为什么我需要在Foo类中使用两个Bar引用?为什么Bar中有两个InverseProperties?我试图做一些像:

    [ForeignKey("foo1Id, foo2Id")]
    public Bar Bar1 { get; set; }

InverseProperty类中只有一个Bar

    [InverseProperty("Bar1")]
    public ICollection<Foo> Foos { get; set; }

但那不起作用:/

我的问题是:当我想用两个FK连接两个表时,如何实现EF数据注释。

Thnkas

0 个答案:

没有答案