【发布时间】:2016-05-12 18:10:01
【问题描述】:
在 MySQL 服务器上使用 EF6/LINQ。我有一个使用 DataTable 绑定到实体 BindingList 的 DataGridView。一切正常,甚至删除记录。但我无法插入尚未在数据库中的记录。
我的意思是,如果我从数据库中选择一条记录,然后删除它,SaveChanges(),然后重新插入它,它会重新插入它自己!但是,如果我尝试插入 ex。 new tcompanyaddress(),设置它的属性,然后插入它?没用。
最终目标是模拟一个事务,清除数据库中与 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();
}
【问题讨论】:
标签: c# mysql linq entity-framework-6