0

私はクラス間に単純な関係m:mを持っていますThingPeople、レコードを更新するときの私の解決策は、前のレコードを削除してから新しいレコードを作成する必要があります

例:

マイ テーブル

  • 人 (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 関係を正しく更新する方法です。

4

0 に答える 0