在我的数据库中,我想说我有两个表,tblFoo和tblBar
tblFoo有列
ID, Name, SomeFooThing, BarGroup, DeviceID, CountryCode, UserID
tblBar有列
ID, Name, SomeBarThing, BarGroup, DeviceID, CountryCode, UserID
我有两个实体类:
[Table("tblFoo")]
public class Foo
{
[Key]
public int? ID { get; set; }
public string Name { get; set; }
public string SomeFooThing { get; set; }
public int BarGroup { get; set; }
[Key]
public int DeviceID { get; set; }
[Key]
public int CountryCode { get; set; }
[Key]
public int UserID { get; set; }
public virtual IEnumerable<Bar> Bars { get; set; }
}
[Table("tblFoo")]
public class Bar
{
[Key]
public int? ID { get; set; }
public string Name { get; set; }
public string SomeBarThing { get; set; }
public int BarGroup { get; set; }
[Key]
public int DeviceID { get; set; }
[Key]
public int CountryCode { get; set; }
[Key]
public int UserID { get; set; }
}
我如何建立Foo和Bar之间的关联?
如果我在SQL中这样做,我会做(给你更多的想法)
SELECT tblBar.ID, tblBar.Name, tblBar.SomeBarThing, tblBar.BarGroup,
tblBar.DeviceID, tblBar.CountryCode, tblBar.UserID, Foo.ID as FooID
FROM tblBar INNER JOIN tblFoo ON tblBar.BarGroup=tblFoo.BarGroup AND
tblBar.DeviceID=tblFoo.DeviceID AND tblBar.CountryCode=tblFoo.CountryCode
AND tblBar.UserID=tblFoo.UserID
我正在使用实体框架6
答案 0 :(得分:1)
您只需在Foo
类:
Bar
导航属性即可
[Table("tblBar")]
public class Bar
{
// (...)
public virtual Foo Foo { get; set; }
}
然后,您可以执行以下查询:
var query = from b in ctx.Bars
let f = b.Foo
select { ... }
EF会为您添加必要的JOIN
。