Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

EntityFramework Core - MySql.Data.EntityFrameworkCore - DbUpdateConcurrencyException
Yeats
myCSharp.de - Member



Dabei seit:
Beiträge: 97
Herkunft: Österreich

Themenstarter:

EntityFramework Core - MySql.Data.EntityFrameworkCore - DbUpdateConcurrencyException

beantworten | zitieren | melden

Hallo,

Habe eine Frage zu .net core und MySql.Data.EntityFrameworkCore(last stable)
Verwendete
Habe im Prinzip zwei POCO Klassen:


public class A:BaseObject
{
public AGroup Group{get;set;}
}

public class AGroup:BaseObject
{
public ICollection<A> A{get;set;}
public AGroup(){
A=new List<A>();}
}

Diese sind in einer Mapping Klasse auf Ihre jeweiligen die Datenbanktabellen gemappt.

Wenn ich nun in einem Test versuche von AGroup ein Objekt zu schreiben, bekomme ich eine DbUpdateConcurrancyException.

Dazu der Test:


[FACT]
public void CreateTest(){
using(var ctx = new DbContext())
{
var group = new AGroup();
group.Add(new A{...});

Db.AGroups.Add(group);
Db.SaveChanges();
}
}

Suche jetzt schon eine geraume Zeit nach dem Grund. Was ich auf alle Fälle ausschließen kann, es gibt auf der DB keinen Eintrag der identisch wäre. Außerdem ist in keiner verwendeten Klasse ein ConcurrencyToken angegeben. Das Objekt ändert sich zwischen hinzufügen und Speichern nicht. Außerdem konnte ich auch ForeignKey Exceptions ausschließen.

Hat von euch vielleicht jemand diesen Fall schon gehabt und einen Grund dafür gefunden?
private Nachricht | Beiträge des Benutzers
t0ms3n
myCSharp.de - Member



Dabei seit:
Beiträge: 319

beantworten | zitieren | melden

Die Exception sagt doch mehr als nur "DbUpdateConcurrancyException". Was steht denn drin?
private Nachricht | Beiträge des Benutzers
Yeats
myCSharp.de - Member



Dabei seit:
Beiträge: 97
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Zitat
Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded.
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

Hol dir das SQL welches zur Aktualisierung der DB generiert wird und führe es manuell aus. Du siehst ja dann welche Where-Bedingungen im SQL sind bzw. woran es scheitert (also warum keine Zeile aktualisiert wird)
private Nachricht | Beiträge des Benutzers
Yeats
myCSharp.de - Member



Dabei seit:
Beiträge: 97
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Wenn ich mir das SQL Statement hole und in der DB absetze, kann ich ohne weiteres hinzufügen.

In der Where Bedingung steht

WHERE ROW_COUNT() = 1
 AND `Id`=LAST_INSERT_ID()
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Yeats am .
private Nachricht | Beiträge des Benutzers