私はDBの最初の方法であるEF 4.1とDbContext POCOコード生成を使用しています。
私のデータベースには、以下に示すように多対多の関係があります。
従業員
従業員ID
従業員名
アカウント
アカウントID
アカウント名
従業員アカウント
従業員ID
アカウントID
問題は、従業員を更新しようとしているときに発生し、アカウントの割り当てを既存のアカウントに変更するため、基本的には以下のようにしています。
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] には何も実行されていません。削除も挿入もありません。