В моем коммерческом веб-приложении у меня есть таблица OrderItem
, в которой первичный ключ установлен на sqlite:
<Id-productId-variant>
id is integer not null
productId is text not null
variant is text null
Variant обнуляется, поскольку ссылается на внешний ключ в таблице вариантов, где столбец варианта имеет видне null, но в моей таблице orderItem
я разрешаю вставку продуктов без варианта
. В sqlite вставка работает хорошо для обоих вариантов: с вариантом и без него.
Вместо этого EF Core возвращает ошибку, когданет варианта
Невозможно отследить сущность типа 'OrderItem', поскольку свойство первичного ключа 'Variant' имеет значение null.
Что я могу сделать?
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; }
}