2

非常に多くのプロパティを持つエンティティがあるため、手動で次のようなことを行う必要はありません。

public void Update(Contact cont)
    {
        using (var ctx = new DatabaseEntities())
        {
            var res = from n in ctx.Contacts
                          where n.ContactID == cont.ContactID
                          select n;

            var selContact = res.First();
            selContact.AddressSuiteNumber = cont.AddressSuiteNumber;
            selContact.PhoneNumber = cont.PhoneNumber;
            /* and doing this for eeeeeeevery 40 properties */
            ctx.SaveChanges();

        }

    }

私は試した

selContact = cont

無駄に。Update()メソッドで引数として渡されたエンティティのインスタンスからLINQ selectで見つかったエンティティにデータをコピーして保存する、このような簡単な方法はありますか?

4

1 に答える 1

3

エンティティがまだコンテキストにアタッチされていない場合は、エンティティをアタッチして、状態を次のように変更してみてくださいModified

using (var ctx = new DatabaseEntities())
{
    ctx.Contacts.Attach(cont);

    // Marks all properties as modified, so new values will be pushed to DB on SaveChanges
    ctx.ObjectStateManager.ChangeObjectState(cont, System.Data.EntityState.Modified);

    ctx.SaveChanges();
}
于 2012-08-02T14:30:37.673 に答える