我有一个微不足道的SQL查询,我尝试使用Fluent API和实体框架,但我有一个粗略的去。以下是查询:创建不基于主键的流利关系
SELECT
tbl1.Column,
tbl2.Column,
tbl3.Column,
tbl4.Column
FROM dbo.Table1 tbl1
INNER JOIN dbo.Table2 tbl2 ON tbl1.[Table 2 ID FK] = tbl2.ID
LEFT JOIN dbo.Table3 tbl3 ON tbl3.[NonKeyColumn] = tbl2.[NonKeyColumn]
LEFT JOIN dbo.Table4 tbl4 ON tbl4.[Table1FK] = tbl1.ID
我的问题是表2和表3上的联接;这些列不是任何一个表的主键,并且在两个表中被命名为完全不同。我的表之间的关系是这样的:
表1 < < M:1>表2
表3 < < M:1>表2
表4 < < L:M >>表2
如何我可以在Table2上编写一个关于两个给定列加入Table3的关系吗?
我认为这是朝着正确方向迈出的一步(表1上定义):
this.HasMany(e => e.Table2)
.WithOptional(e => e.Table1)
.HasForeignKey(tlb2 => tbl2.Column)
但我打了一个死胡同,因为我不能在表1列到表2中的列关联。谢谢!
你已经有实体吗? – NunoCarmo 2013-03-05 22:10:20
是的。它可能会提到我使用的是代码优先的方法,所以没有EDMX来设置协会或这种性质的东西。 – dparsons 2013-03-06 02:00:54
我认为如果你可以在这里发布真实的实体,以便我们可以看到实际的场景,那将会很好。 – 2013-03-06 03:38:38