繁体   English   中英

C#->实体框架6.1.3->复合可为空的外键字符串

[英]C# -> Entity Framework 6.1.3 -> Composite nullable foreign key string

我正在与一个外部系统集成,在该外部系统中它们使用许多复合键,并且经常使用strings 我现在面临一个需要使复合外键为nullable 如果值是一个int我可以用int?将其标记为可为空int? 但这在这里是不可能的。 我认为我必须使用流利的api,但如果可以的话,最好使用数据注释。 更难的是,外键的第一部分也用作主键的第一部分,因此不能为空。

BillCurrencyDisbCurrencyFeeCalculation有需要可空下键。 除了可为空的部分以外,创建的模型是有效的。

明显的异常消息:

INSERT语句与FOREIGN KEY约束“ FK_dbo.FeeCalculations_dbo.ExchangeRates_BusinessSystemId_BillCurrency”冲突。 数据库“ Project.Database”的表“ dbo.ExchangeRates”中发生了冲突。 该语句已终止。

public class FeeCalculation
{
    [Key, Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public string BusinessSystemId { get; set; }

    [Key, Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CaseId { get; set; }

    public string BillCurrency { get; set; }

    [ForeignKey("BusinessSystemId,BillCurrency")]
    public virtual ExchangeRate BillCurrencyObject { get; set; }

    public string DisbCurrency { get; set; }

    [ForeignKey("BusinessSystemId,DisbCurrency")]
    public virtual ExchangeRate DisbCurrencyObject { get; set; }

}

public class ExchangeRate
{
    [Key, Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public string BusinessSystemId { get; set; }

    [Key, Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public string ForeignCurrency { get; set; }

    public string HomeCurrency { get; set; }

    public DateTime EffectiveDate { get; set; }

    public double Rate { get; set; }
}

原来,模型没有问题,这是一个FeeCalculation值已损坏,并试图插入ExchangeRate不存在的键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM