Основной ключ Entity Framework Core - PullRequest
0 голосов
/ 12 апреля 2019

В моем коммерческом веб-приложении у меня есть таблица 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; }
}
...