0

ASPMVCアプリ。コントローラで、データベースから2つの行を取得し、それらを比較して、必要に応じて新しいデータを追加します。それぞれのモデルは次のようになります。

    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }

    public List<PersonAlias> AliasList { get; set; }
    public List<Identification> IDList { get; set; }

リストにたどり着くと困っています。ループして比較するのは得意ですが、追加するのに問題があります。これが私が持っているものです:

        var newRecord =
                (from p in db.Person
                 where p.ApplicantID.Equals(ApplicantId)
                 select p).First();

        //  Get the existing applicant record
        var existingRecord =
                (from e in e_db.PersonAttributes
                 where e.PersonID.Equals(PersonId)
                 select e).First();

        foreach (var newAlias in newRecord.PersonAlias)
        {
            matchesAny = true;

            List<PersonAlia> tempAlias = new List<PersonAlia>();

            if ( existingRecord.PersonAlias != null)
            {
                foreach (var oldAlias in existingRecord.PersonAlias)
                {
                    if ((oldAlias.FirstName != newAlias.FirstNameAlias) || (oldAlias.LastName != newAlias.LastNameAlias))
                    {
                        matchesAny = false;
                    }

                    if (!matchesAny)
                    {

                        tempAlias.Add(new PersonAlia
                        {
                            FirstName = newAlias.FirstNameAlias,
                            MiddleName = newAlias.MiddleNameAlias,
                            LastName = newAlias.LastNameAlias,
                            CreatedBy = User.Identity.Name,
                            CreateDate = DateTime.Now,
                            ModifiedBy = User.Identity.Name,
                            ModifiedDate = DateTime.Now
                        });
                    }
                } // End inner foreach

                existingRecord.PersonAlias.Add(new PersonAlia
                {
                    FirstName = tempAlias.
                    MiddleName = newAlias.MiddleNameAlias,
                    LastName = newAlias.LastNameAlias,
                    CreatedBy = User.Identity.Name,
                    CreateDate = DateTime.Now,
                    ModifiedBy = User.Identity.Name,
                    ModifiedDate = DateTime.Now
                });

            } // End outer Foreach

リスト内の一時リストにアイテムを追加しようとしていますが、一時リストから既存のレコードに追加する方法がわかりません。完了したら、db.savechanges();を追加します。

私はこれを行うためのいくつかの方法(モデル、linq、EF)を混同していると思うので、誰かが1つのメトイドを提案し、良いチュートリアルに私を向けることができれば、それは素晴らしいことです。ありがとうございました。

4

1 に答える 1

0

これを実現する最も簡単な方法は、一致するすべてのレコードを最初に取得することです。次に、それらを一時的なコレクションに入れ、それをループして、existingRecord.PersonAlias.Addを呼び出します。

あなたがしていることは、コレクションが繰り返されている間に、実際にコレクションを変更しようとしていることです。

于 2012-12-06T14:46:28.927 に答える