[英]C# -> Entity Framework 6.1.3 -> Composite nullable foreign key string
我正在与一个外部系统集成,在该外部系统中它们使用许多复合键,并且经常使用strings
。 我现在面临一个需要使复合外键为nullable
。 如果值是一个int
我可以用int?
将其标记为可为空int?
但这在这里是不可能的。 我认为我必须使用流利的api,但如果可以的话,最好使用数据注释。 更难的是,外键的第一部分也用作主键的第一部分,因此不能为空。
BillCurrency
和DisbCurrency
为FeeCalculation
有需要可空下键。 除了可为空的部分以外,创建的模型是有效的。
明显的异常消息:
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.