与一对一关系实体框架代码中的FOREIGN KEY冲突

时间:2015-12-25 11:59:36

标签: entity-framework ef-migrations

虽然我要添加 - 迁移它还可以,但是当我要运行update-database时,我在包管理器控制台中遇到了这种类型的错误

ALTER TABLE语句与FOREIGN KEY约束冲突" FK_dbo.ServiceTypes_dbo.Services_ServiceTypeID"。冲突发生在数据库" Otaidea",table" dbo.Services",column' ServicesID'。

我的两个模特:

public class Services
{
    [Key]
    public int ServicesID { get; set; }
    [DisplayName("Register Date")]
    public DateTime RegisterDate { get; set; }

    public int ServiceTypeID { get; set; }

    public string ApplicationUserID { get; set; }
    public virtual ServiceType ServiceType { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }

}

我的另一张表:

public class ServiceType
{
    [ForeignKey("Services")]
    public int ServiceTypeID { get; set; }
    public string NAME { get; set; }
    public virtual Services Services { get; set; }
}

1 个答案:

答案 0 :(得分:0)

您在模特中的关系是错误的。服务具有“类型”,因此外键从ServiceType转到Service。您不需要引用ServiceType中的服务

您应该像这样创建模型:

<强>服务

SQL Error: ORA-01427: 01427. 00000 -  "single-row subquery returns more than one row"

<强>的ServiceType

public class Services
{
    [Key]
    public int ServicesID { get; set; }
    [DisplayName("Register Date")]
    public DateTime RegisterDate { get; set; }
    public string ApplicationUserID { get; set; }

    [ForeignKey("ServiceType")]
    public int ServiceTypeID { get; set; }
    public virtual ServiceType ServiceType { get; set; }

    public virtual ApplicationUser ApplicationUser { get; set; }    
}

我也会对public class ServiceType { [Key] public int ServiceTypeID { get; set; } public string NAME { get; set; } } 属性做同样的事情,但由于你没有发布它,我按原样让它。

此外,如果您删除数据库并让Entity Framework再次为您创建它会更好。因为你的模特关系错误所以事情变得“混乱”。