1

次の linq クエリから取得したレコードがあります。

using (var context = new myEntities())
{
     var record = (from d in context.Student select d).SingleOrDefault();
}

通常、次のようにレコードに新しい値を割り当てます。

record.Value = SomeNewValue;

それから私は

context.SaveChanges;

これはすべてうまくいきます。私の質問は、別の関数に渡す場合、またはレコードが関数から返された場合、どうすれば同じレコードを保存できますか? 私はこのようなものを探しています:

context.SaveChanges(record);
4

3 に答える 3

1

問題の関数をトリガーする操作は、 を作成および管理する必要がありますcontext。ASP.NET MVC アプリの場合は、要求の開始時にコンテキストを設定し、要求context.SaveChangesが終了したときに呼び出すことをお勧めします。winforms/WPF アプリでは、アプリケーションの存続期間中は保持しておき、データを変更する可能性のあるアクション (ボタンを押すなど) の後contextに呼び出したい場合があります。context.SaveChanges()

于 2012-06-18T21:00:47.820 に答える
0

操作するクラス オブジェクトがあるということですか。もしそうなら:

myEntities.Student.AddObject(student); //Where student is of type Student

または、まだ持っていない場合は、その場で作成します。

myEntities.Student.AddObject(new Student()
           {
              Name = formData[Name],
              GPA = GetGPA(),
              Major = Convert.ToString(Major)
           });

ただし、この後も電話する必要がSaveChangesあります。

あるいは...

オブジェクトを追跡し、上記のコンテキスト外でそれらを操作する場合は、オブジェクトのプロパティを変更するときにSaveChanges()メソッドを呼び出して変更をコミットするように、プロパティのアクセサーを変更できます。ちょうど考えるべきこと。

参考資料: http://msdn.microsoft.com/en-us/library/bb738695.aspx

于 2012-06-18T21:01:28.357 に答える
0

多分あなたはこのようなものが好きですか:

static class Utilities
{
    public static void SaveChanges( this MyEntity entity, Student record, Student SomeNewValue ) 
    {
         record.Value = SomeNewValue;
         entity.SaveChanges;
    }
}

したがって、次のように関数を呼び出すことができます。

context.SaveChanges(record, SomeNewValue);
于 2012-06-18T21:05:37.283 に答える