在我的商务网络应用中,我有一个表OrderItem
,其中在sqlite上设置的主键是
<Id-productId-variant>
id is integer not null
productId is text not null
variant is text null
Variant可为空,因为它是引用Variant表上的外键,其中Variant列不为null,但在我的orderItem
表中,我允许插入不带Variant的产品
在sqlite中,插入内容适用于两种情况:带有和不带有变体。
EF Core没有变体时会返回错误
由于主键属性“ Variant”为空,因此无法跟踪“ OrderItem”类型的实体。
我该怎么办?
builder.HasKey(e => new { e.Id, e.Codart, e.Codvar });
...
builder
.HasOne(e => e.Product)
.WithOne(e => e.OrderItems)
.HasForeignKey<OrderItems>(e => e.Codart);
builder
.HasOne(e => e.Variant)
.WithOne(e => e.OrderItems)
.HasForeignKey<OrderItems>(e => new { e.Codart, e.Codvar });
public class Variant
{
[key]
public string Codart { get; set; }
[key]
public string Codvar { get; set; }
public string Descri { get; set; }
}