Поскольку он работает только тогда, когда все сущности используют автоматически сгенерированные PK, а также производит ненужные обновления связанных сущностей, я не рекомендую это делать.
ты «Мой магазин» и «Продукт» имеют отношение один ко многим, см. Мои модели
public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public string Tag { get; set; }
public string Brand { get; set; }
public string Place { get; set; }
public int ShopID { get; set; }
public Shop Shop { get; set; }
}
public class Shop
{
public int ID { get; set; }
public string Name { get; set; }
public string Comment { get; set; }
public string Number { get; set; }
public ICollection<Product> Products { get; set; }
}
public class ShopContext : DbContext
{
public ShopContext(DbContextOptions<ShopContext> options) : base(options)
{
}
public DbSet<Shop> Shops { get; set; }
public DbSet<Product> Products { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Shop>().ToTable("shop");
modelBuilder.Entity<Product>().ToTable("product");
}
}
public class CreateModel : PageModel
{
private readonly ShopContext _context;
public CreateModel(ShopContext context)
{
_context = context;
}
public IActionResult OnGet()
{
ViewData["Shop"] = new SelectList(_context.Shops, "ID", "Name");
return Page();
}
[BindProperty]
public Product Product { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Products.Add(Product);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
}
Магазин на странице создания - это выпадающий список, когда я публикую новый продукт в обработчике, я вижу product.ShopID - это идентификатор, который существует в таблице Shop, и product.Shop.ID совпадает с product.ShopID. , Но когда я вызываю saveChangesAsync (), он выдает исключение:
MySqlException: невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (shopdb
.product
, ОГРАНИЧЕНИЕFK_product_shop_ShopID
ВНЕШНИЙ КЛЮЧ (ShopID
) РЕКОМЕНДАЦИИshop
(ID
) НА УДАЛЕННОМ КАСКАДЕ)
Я пытался установить product.Shop в null перед вызовом метода saveChangesAsync, но все равно не работает, кто-нибудь может помочь?
Приложение Razor Pages ASP.NET Core 2.0, Nuget: Pomelo.EntityFrameworkCore.MySql v2.0.1