9

私はEntity Frameworkが初めてです。レコードを更新して変更をデータベースに保存しようとしています。

public void SaveEdit(Gate gate)
        {
            try
            {
                using (dc = new GateEntities())
                {
                    var query = (from tbsite in dc.tblSites
                                 where tbsite.ID == gate.ID
                                 select tbsite).FirstOrDefault();

                    query.CalledInAt = gate.CalledInAt;
                    query.CallerRequest = gate.CallerRequest;
                    query.ContactPersonOnSite = gate.ContactPersonOnSite;
                    query.Email = gate.Email;
                    query.EmailSitePerson = gate.EmailSitePerson;

                    dc.SaveChanges();
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }



        }

It gets no exceptions or error messages but it does not save the changes to the database. why it's not updating the record?

4

3 に答える 3

14

queryオブジェクトを変更した後 を呼び出す前に状態を変更する必要がありModifiedますcontext.SaveChanges()。コンテキスト オブジェクトは、変更するエンティティについて認識している必要があります。dcあなたのコンテキストオブジェクトは次のとおりです 。

query.CalledInAt = gate.CalledInAt;
//change other properties ..
dc.Entry(query).State = EntityState.Modified;
dc.SaveChanges();

それはあなたのために働くはずです。

于 2013-09-19T08:51:47.473 に答える
5

オブジェクトを選択するにはエンティティフレームワークを使用する必要があります。これにより、結果オブジェクトが追跡可能になります。これを試してください

            using (var dc = new GateEntities())
            {
                var gate = dc.tblSites.Where(g => g.ID == date.ID).FirstOrDefault();

                gate.CalledInAt = gate.CalledInAt;
                gate.CallerRequest = gate.CallerRequest;
                gate.ContactPersonOnSite = gate.ContactPersonOnSite;
                gate.Email = gate.Email;
                gate.EmailSitePerson = gate.EmailSitePerson;

                dc.SaveChanges();
            }
于 2013-09-19T04:55:13.683 に答える