sql >> Databasteknik >  >> RDS >> Mysql

ef kärna ett till många relationskast undantag Kan inte lägga till eller uppdatera en underordnad rad

Du bör inte göra ShopID nullbar om det krävs av design.

Problemet du upplever beror på att Add Metoden markerar också rekursivt alla entitetsinstanser som kan nås via navigeringsegenskaper och som för närvarande inte spåras av sammanhanget som Added (dvs. ny).

Det kan lösas på många sätt:

  • Ställer in enhetspost till Added istället för Add metod:

    _context.Entry(Product).State = EntityState.Added;
    await _context.SaveChangesAsync();
    
  • Ställer in navigeringsegenskapen till null före ringer Add :

    Product.Shop = null;
    _context.Products.Add(Product);
    await _context.SaveChangesAsync();
    
  • Bifogar navigeringsegenskapsobjektet före ringer Add :

    if (Product.Shop != null) _context.Attach(Product.Shop);
    _context.Products.Add(Product);
    await _context.SaveChangesAsync();
    
  • Använder Update istället för Add :

    _context.Products.Update(Product);
    await _context.SaveChangesAsync();
    

Den sista tekniken förklaras i Spara data - frånkopplade enheter - blandning av nya och befintliga enheter :

Eftersom det bara fungerar när alla enheter använder automatiskt genererade PK:er, och även producerar onödiga uppdateringar av de relaterade enheterna, rekommenderar jag det inte.



  1. MYSQL-fel:1045 (28000):Åtkomst nekad för användaren 'root'@'localhost'

  2. Hur läser man en fil och lägger till dess innehåll i databasen?

  3. Fel:välj kommando nekat för användare '<användarid>'@'<ip-adress>' för tabellen '<tabellnamn>'

  4. script för siffror som saknas fungerar inte?