MySQLサーバーでEF6/LINQを使用しています。 DataTableを使ってエンティティのバインディングリストにバインドされたDataGridViewがあります。すべてが正常に動作し、レコードを削除することさえできます。しかし、まだデータベースに入っていないレコードは挿入できません。EF6/LINQ MySQL - 挿入されません
これは、データベースからレコードを選択し、SaveChanges()を削除してから再び挿入したときに、再度挿入されるということです。しかし、もし私が元に挿入しようとすると。新しいtcompanyaddress()、そのプロパティを設定し、それを挿入しますか?動作しません。
究極の目標は、DB内のCompanyID FKに関連付けられたすべてのアドレスをクリアしてトランザクションをエミュレートし、その後、BindingListから最新の編集済みアドレスを再挿入することです。再び、それは動作します...しかし、新しいエントリではありません。
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();
}