在我的商务Web应用程序中,我有一个表OrderItem
,其中在SQLite上设置了主键
<Id-productId-variant>
id is integer not null
productId is text not null
variant is text null
VARIANT可以为空,因为它引用了VARIANT表上的外键,其中VARIANT列不为空,但在我的orderItem
表中,我允许插入不带VARIANT的产品
在SQLite中,插入在两种情况下都可以很好地工作:使用和不使用变量。
如果没有变量,EF Core将返回错误
无法跟踪类型为‘OrderItem’的实体,因为主键属性‘Variant’为空。
我能做什么?
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; }
}
1条答案
按热度按时间erhoui1w1#
试试这个: