sql server -使用c# EF6将两个表连接到第三个表

本文关键字:两个 三个 连接 server 使用 EF6 sql | 更新日期: 2023-09-27 17:54:21

我用的是c# &EF6试图连接两个不同的表(Chassis &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; }
}

BodyType:

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;
    }
}

已经有数据在数据库中,我已经尝试更新数据库-强制数据库,但它给我同样的错误。

我知道我错过了一些小而简单的东西,但我不知道它是什么。任何帮助将是伟大的,谢谢!-致EF6新秀

sql server -使用c# EF6将两个表连接到第三个表

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

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