【问题标题】:EF6 Foreign Key IssueEF6 外键问题
【发布时间】:2014-01-18 11:53:43
【问题描述】:

这是我的模型

public class Driver
{
    public int Id { get; set; }
    public String Name { get; set; }
    public int VehicleId { get; set; }
    public virtual Vehicle Vehicle  { get; set; }
}

public class Vehicle
{  
    public int Id { get; set; }
    public String Name { get; set; }

    public virtual Driver Driver { get; set; }

    public int VehicleGroupId { get; set; }
    public virtual VehicleGroup Vehicles { get; set; }
}

更新数据库时出现以下错误:

无法确定类型“AppName.Models.Vehicle”和“AppName.Models.Driver”之间关联的主体端。此关联的主体端必须使用关系流式 API 或数据注释显式配置。

我希望使用数据注释来解决问题。我尝试将外键属性放在车辆模型中的 Driver Navigation 属性上。但没有成功。非常感谢任何帮助。

【问题讨论】:

    标签: entity-framework entity-framework-6


    【解决方案1】:

    要解决您的问题,您需要像这样明确设置关联的结尾:

    public class Vehicle
    {  
        [Key, ForeignKey("Driver")]
        public int Id { get; set; }
        public String Name { get; set; }
    
        public virtual Driver Driver { get; set; }
    
        public int VehicleGroupId { get; set; }
        public virtual VehicleGroup Vehicles { get; set; }
    }
    

    我认为您的模型不正确,因为驾驶员可以在现实生活中使用许多车辆;)

    【讨论】:

    • 我可以将 [ForeignKey("Vehicle")] 放在 Driver Model 中的 VehicleId 属性上吗?
    • Driver 和 Vehcile 有什么关系: - 一个 Driver 可以驾驶多辆 Vehicle - 一个 Driver 只能驾驶一辆车
    • 一对一。 EF5和EF6在设置外键属性上有什么变化吗?
    • 如果是一对一的,你需要删除 Driver 上的 VehicleId。使用 [Key, ForeignKey("Driver")] opn Vehicle 类后一切正常。
    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多