使用C#EF6将2个表连接到第3个表

时间:2015-06-08 09:54:22

标签: c# sql-server entity-framework

我正在使用C#& EF6尝试将两个不同表(机箱& BodyType )连接到另一个表( StockItem )。但是在尝试通过程序包管理器控制台更新数据库时出现此错误:

  

ALTER TABLE语句与FOREIGN KEY约束冲突   “FK_dbo.Chassis_dbo.StockItems_ChassisLongitudinalId”。冲突   发生在数据库“TruckDbWcf”,表“dbo.StockItems”,列   'ID'。

我的代码优先类:

机箱:

public class Chassis
{
    public int Id { get; set; }
    public string Name { get; set; }

    public int ChassisLongitudinalId { get; set; }
    [ForeignKey("ChassisLongitudinalId")]
    public virtual StockItem ChassisLongitudinal { get; set; }
}

体形

public class BodyType
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool isFlatDeck { get; set; }

    public int LongitudinalId { get; set; }
    [ForeignKey("LongitudinalId")]
    public virtual StockItem Longitudinal { get; set; }
}

StockItem:

public class StockItem
{
    public StockItem()
    {
        SectionGroups = new HashSet<SectionGroup>();
    }
    public int Id { get; set; }


    private string _stockCode;
    [Index(IsUnique = true)]
    [StringLength(450)]
    [Required]
    public string StockCode
    {
        get { return _stockCode; }
        set { _stockCode = value.ToUpper(); }
    }

    public string Description { get; set; }

    public virtual ICollection<SectionGroup> SectionGroups { get; set; }

    public double? Mass { get; set; }

    public double UnitCost { get; set; }

    public override string ToString()
    {
        return StockCode + " - " + Description;
    }
}

数据库中已有数据,我尝试更新数据库-force数据库,但它给了我同样的错误。

我知道我错过了一些小而简单的东西,但我无法弄清楚它是什么。任何帮助都会非常感谢你! - 关注EF6新秀。

1 个答案:

答案 0 :(得分:1)

您的Chassis表可能已经插入了一些行。在一次迁移中,您尝试创建不可为空的外键。我认为, 你应该是可以为空的外键。

public int? LongitudinalId { get; set; }
public int? ChassisLongitudinalId { get; set; }