Verwenden von EF6/LINQ mit einem MySQL-Server. Ich habe eine DataGridView gebunden an eine BindingList von Entitäten mit einem DataTable. Alles funktioniert gut, sogar Datensätze löschen. Ich kann jedoch keine Datensätze einfügen, die noch nicht in der Datenbank vorhanden sind.EF6/LINQ MySQL - Wird nicht eingefügt
Was ich damit meine ist, dass, wenn ich einen Datensatz aus der Datenbank auswählen, löschen Sie es, SaveChanges(), und fügen Sie es erneut ein, es fügt sich wieder ein! Aber wenn ich versuche, ex einzufügen. new tcompanyaddress(), seine Eigenschaften festlegen und einfügen? Funktioniert nicht.
Das ultimative Ziel besteht darin, eine Transaktion zu emulieren, die alle mit einer CompanyID FK verknüpften Adressen in der Datenbank löscht, und dann einfach die aktuellsten bearbeiteten Adressen aus der BindingList neu einfügt. Wieder funktioniert es ... aber nicht auf neue Einträge.
using (JobTrackerEntities context = new JobTrackerEntities())
{
context.Database.Connection.ConnectionString += ";password=orbitman1;";
// Update main profile
tcompany companyRow = context.tcompany.Find(Company.CompanyID);
companyRow.CompanyName = Company.CompanyName;
// Update foreign profiles
var addresses = from address in context.tcompanyaddress // Retreive all addresses that were removed
where address.CompanyID == Company.CompanyID
select address;
// Clear existing addresses
foreach (tcompanyaddress address in addresses)
{
Console.WriteLine("Remove " + address.LocationName);
context.Entry(address).State = EntityState.Deleted;
}
addresses = from address in context.tcompanyaddress // Retreive all addresses that were removed
where address.CompanyID == Company.CompanyID
select address;
Console.WriteLine("After clear: " + addresses.Count());
// Replace with new addresses
foreach (tcompanyaddress address in CompanyAddresses)
{
Console.WriteLine("Add " + address.LocationName);
context.tcompanyaddress.Add(address);
}
// Commit transaction
context.SaveChanges();
addresses = from address in context.tcompanyaddress // Retreive all addresses that were removed
where address.CompanyID == Company.CompanyID
select address;
Console.WriteLine("After add: " + addresses.Count());
RefreshProfileForm();
}