Ich bin zurück zu Entity-Framework für ein Projekt gegangen. Meine Datenbankbeziehungen werden für die Datenbank erzwungen, nicht nur für die Business-Schicht.Entity Framework persitierenden Datensatz zu DB
Ich habe eine Fremdschlüsseleinschränkung, wenn ich versuche, einen Datensatz hinzuzufügen, der gerade einen neuen untergeordneten Datensatz erstellt hat.
Unten ist ein einfaches Beispiel für meine Tabelle und Codee.
Haupt Tabelle
- Id int (pk)
- childID int (fk)
- -Name nvarchar (50)
Kindertisch - Id int (pk) - Name nvarch (50)
private static int addChild(string name)
{
using (var context = new DatabaseEntity())
{
var table = new DBChildTable() { Name = name };
context.DBChildTable.Add(table);
context.SaveChanges();
return table.Id;
}
}
private static int addMain(int childId, string name)
{
using (var context = new DatabaseEntity())
{
var table = new DBMainTable() { Name = name, ChildId = childId };
context.DBMainTable.Add(table);
context.SaveChanges();
return table.Id;
}
}
private static void basiceLogic()
{
int childId = addChild("Child");
addMain(childId, "Main");
}
Ich benutze Entity Framework 6 und eine SQL Server Backend-Datenbank.
Ich erinnere mich, dass ich einen Befehl zum Kontext oder irgendwo hinzufügen musste, um dem Code zu sagen, dass er den Datensatz aus dem Entity-Framework im Speicher an die Datenbank persistieren soll.
Irgendwelche Hilfe?
Dank
Was ist Ihre Frage? Code, den Sie freigegeben haben, sollte funktionieren. – lorond
SaveChanges() ist der Befehl :) – marius
Hallo, ich weiß. Wenn ich die zweite Methode zum Hinzufügen der Hauptelemente anwähle, klagt es über die Fremdschlüsseleinschränkung für die Kind-ID. Aber wenn die Methode erneut ausgeführt wird, wird die childId vom ersten Versuch an verwendet. –