在没有导航属性的情况下映射多对多外键

时间:2013-03-19 22:08:00

标签: c# entity-framework foreign-keys

是否可以使用EF 5.0 Code First映射外键列表而不是导航属性?

想象一下,我有一个Car实体和一个Driver实体。司机可以驾驶多辆车,一辆车可以有多个司机。这是在数据库中使用连接表建模的,用于Car和Driver表之间的关系:Car_drivers (car_id, driver_id)

我希望能够将其映射到以下两个类:

public class Driver
{
    public int Id { get; set; }
    ...
    public IList<int> Drives  { get; set; } // List of car ID's
}

public class Car
{
    public int Id { get; set; }
    ...
    public IList<int> DrivenBy { get; set; } // List of driver ID's
}

如何使用EF 5.0 Code First将数据库模型中的外键映射到此模型?

更新

有人知道NHibernate是否支持它?

1 个答案:

答案 0 :(得分:0)

这是不可能的。实体框架只能映射相关实体的集合。因此,您应该使用实体集合而不是密钥集合:

public class Driver
{
    public int Id { get; set; }
    ...
    public virtual ICollection<Car> Drives  { get; set; }
}

public class Car
{
    public int Id { get; set; }
    ...
    public virtual ICollection<Driver> DrivenBy { get; set; }
}