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 回答