如果 entity framework 不映射连接实体,如何在两个实体之间进行连接?
How to make join between two entities, if entity framework doesn't map the junction entity?
我有多对多关系,但由于我使用的是 EF,所以我没有联结 table,因为它没有主键。
通常,如果 TableAB 有一个主键,我会这样做:
var query = from a in db.TableA
join ab in db.TableAB on
a.Id equals ab.Id_TableA
join b in db.TableB on
ab.Id_TableB equals b.Id
select { a.Field, b.Field };
但是,由于我没有映射 TableAB,执行 JOIN 的正确方法是什么?
我已经使用 API 流畅的映射创建了导航属性。但是使用navigation properties获取数据,性能是不是变差了,还是?
编辑:我正在使用 POCO。
谢谢
据我了解,您的 TableAB 具有复合主键 [id_TableA、id_TableB]。所以我认为最好对这个键进行正确的映射。它应该看起来像这样:
public class TableAB
{
[Key]
[Column(Order = 0)]
[ForeignKey("TableA")]
public int id_TableA { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("TableB")]
public int id_TableB{ get; set; }
}
我有多对多关系,但由于我使用的是 EF,所以我没有联结 table,因为它没有主键。
通常,如果 TableAB 有一个主键,我会这样做:
var query = from a in db.TableA
join ab in db.TableAB on
a.Id equals ab.Id_TableA
join b in db.TableB on
ab.Id_TableB equals b.Id
select { a.Field, b.Field };
但是,由于我没有映射 TableAB,执行 JOIN 的正确方法是什么?
我已经使用 API 流畅的映射创建了导航属性。但是使用navigation properties获取数据,性能是不是变差了,还是?
编辑:我正在使用 POCO。
谢谢
据我了解,您的 TableAB 具有复合主键 [id_TableA、id_TableB]。所以我认为最好对这个键进行正确的映射。它应该看起来像这样:
public class TableAB
{
[Key]
[Column(Order = 0)]
[ForeignKey("TableA")]
public int id_TableA { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("TableB")]
public int id_TableB{ get; set; }
}