我完全迷失了。我有两张表,让他们说Foo
和Bar
他们通过两列连接。我试图在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