tabelle
Product
-Id (PK)
-Name
ProductExtension
-ProductId (PK)
-Notes
Assegna e inserisci record
Product product = new Product();
product.Name = "Phone";
ProductExtension = productExtension = new ProductExtension();
productExtension.ProductId = product.Id;
productExtension.Notes = "some notes";
//Add and save
context.Products.Add(product);
context.ProductExtensions.Add(productExtension);
context.SaveChangesAsync();
Errore :
PostgresException: 23503: l'inserimento o l'aggiornamento sulla tabella "product_extension" viola il vincolo di chiave esterna "FK_product_extension_product_product_id"
Quindi il prodotto non viene creato per primo e l'ID prodotto viene assegnato a productextesion.productid?
Devo fare un Add
e SaveChanges
per ogni tabella? :(
Usa la proprietà di navigazione o salva prima, in modo che EF Core possa popolare le chiavi primarie (accade solo dopo che l'entità è stata salvata).
public class ProductExtension
{
public int ProductId { get; set; }
public Product Product { get; set; }
public string Notes { get; set; }
}
Ora puoi usare
Product product = new Product();
product.Name = "Phone";
ProductExtension = productExtension = new ProductExtension();
// assign the whole model to the navigation property
productExtension.Product = product;
productExtension.Notes = "some notes";
// no need for this anymore
// context.Products.Add(product);
//Add and save
context.ProductExtensions.Add(productExtension);
context.SaveChangesAsync();