私はクラス間に単純な関係m:mを持っていますThing
がPeople
、レコードを更新するときの私の解決策は、前のレコードを削除してから新しいレコードを作成する必要があります
例:
マイ テーブル
- 人 (PeopleId、名前)
- モノ (ThingId、名前)
- PeopleHasThing (PeopleId、ThingId)
私のモデル
PeopleModel.cs
// The following method works!
// I've tried but I have my doubts about deleting records
public static void Update(PeopleModel p)
{
using (_context = new myDataContext())
{
var result = (from r in _context.People
where r.PeopleId == p.PeopleId
select r).SingleOrDefault();
if (null == result) return;
result.Name = p.Name;
PeopleHasThing.DeleteAllByPeopleId(result.PeopleId);
EntitySet<PeopleHasThing> set = new EntitySet<PeopleHasThing>();
//HasThing = List<ThingModel>
//ThingModel: { (Int32)ThingId, (bool)IsMarked. (string)Description }
m.HasThing.ForEach(e =>
{
if (e.IsMarked)
{
set.Add(new PeopleHasThing
{
ThingId = e.ThingId,
People = result
});
}
});
result.PeopleHasThing = set;
_context.SubmitChanges();
}
}
問題は、M:N 関係を正しく更新する方法です。