У меня есть класс Articolo и класс Variante. Проблема в том, как настроить внешний ключ класса Stock, который ссылается на Articolo и Variante
Мой список товаров выглядит так:
Article1-variante1
Article1-variante2
Article1-variante3
Статья 2-noVariante
...
и так далее
В Esistenze у меня есть
Article1-variante1-5
Article1-variante2-10
Article1-variante3-100
Статья 2-noVariante-0
class Articolo{
public string Codart { get; set; }//key
...
public List<Variante> Varianti { get; set; }
public Esistenza Esistenza { get; set; }
}
class Variante{
public string Codart { get; set; }//key
public string Variante { get; set; }//key
}
class Esistenza
{
public string Codart { get; set; }//key
public string Variante { get; set; }//key
public int Esistenza { get; set; }
public Articolo Articolo { get; set; }
}
//sqlite
CREATE TABLE Esistenze(
[Codart] TEXT NOT NULL,
[Codvar] TEXT NOT NULL,
[Esiste] REAL NOT NULL,
CONSTRAINT [PK_Esistenze] PRIMARY KEY ( [Codart], [Codvar] ),
CONSTRAINT FK_Articoli FOREIGN KEY (Codart) REFERENCES Articoli(Codart) ON DELETE CASCADE,
CONSTRAINT FK_Varianti FOREIGN KEY (Codvar) REFERENCES Varianti(Codvar) ON DELETE CASCADE
)
public void Configure(EntityTypeBuilder<Esistenza> builder)
{
builder.HasKey(e => new {e.Codart, e.Codvar});
builder.Property(e => e.Esiste).IsRequired();
builder
.HasOne(a => a.Articolo)
.WithOne(e => e.Esistenza)
.HasForeignKey<Esistenza>(f => new {f.RkaCodart,f.RkaCodvar});
}
я получаю ошибку
Связь между 'Esistenza.Articolo' и 'Articolo.Esistenze' со свойствами внешнего ключа {'Codart': string, 'Codvar': string} не может быть нацелена на первичный ключ {'Codart': string}, поскольку он несовместим