如果实体框架没有映射联结实体,如何在两个实体之间进行连接?

时间:2015-07-08 02:41:58

标签: c# entity-framework asp.net-mvc-4 entity-framework-4

我有很多关系,但由于我使用EF,我没有联结表,因为它没有主键。

通常,如果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​​ fluent映射创建了导航属性。但是使用导航属性获取数据,性能是否更差?

编辑:我正在使用POCO。

由于

1 个答案:

答案 0 :(得分:1)

据我所知,您的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; }

}