我使用DB第一方法,EF 4.1與DbContext POCO代碼gen。另一個多對多的複雜性 - 實體框架4.1 DbContext
我的數據庫有許多一對多的關係如下圖所示:
員工
僱員
EmployeeName
帳戶
ACCOUNTID
帳戶名
EmployeeAccount
僱員
ACCOUNTID
當我嘗試更新的員工,並更改帳戶分配到預先存在的帳戶,所以我出現的問題我基本上這樣做如下:
using(context)
{
var query = from e in context.Employees.Include(f => f.Accounts)
where e.EmployeeId == employeeId
select;
Employee emp = query.FirstOrDefault()
}
emp.EmployeeName = "Test";
emp.Accounts.Clear();
Account act = MethodThatLooksUpAccountByName("SomeAccountName");
emp.Accounts.Add(act);
using(context)
{
context.Accounts.Attach(act);
emp.State = EntityState.Modified;
context.Employees.Attach(emp);
context.SaveChanges();
}
正在生成的SQL正在[Employee]表上執行更新,根本沒有[EmployeeAccount],沒有刪除沒有插入。
我的歉意,我沒有正確表示情況。我不在附加場景中,因爲上下文在linq語句之後放置。查看編輯的問題。 – EkoostikMartin
@EkoostikMartin:我已經更新了答案。 – Slauma
謝謝,這有效,也讓我更好地理解一些EF概念。看起來EF有一些無關緊要的問題,這些問題使得與斷開連接的實體很難合作。我擔心隨着我的數據模型和操作要求變得更加複雜,情況會變得更糟。 – EkoostikMartin