我有来自以下linq查询的记录:
using (var context = new myEntities())
{
var record = (from d in context.Student select d).SingleOrDefault();
}
我通常会为记录分配一个新值,如下所示:
record.Value = SomeNewValue;
然后我会做一个
context.SaveChanges;
这一切都很好。我的问题是:如果我将其传递给另一个函数或者从函数返回记录,我如何保存相同的记录?我正在寻找这样的东西:
context.SaveChanges(record);
答案 0 :(得分:1)
触发相关功能的操作应该创建和管理context
。如果它是一个ASP.NET MVC应用程序,我建议您在请求开始时设置上下文,并在完成后调用context.SaveChanges
。在winforms / WPF应用程序中,您可能希望在应用程序的生命周期内保持context
,并在任何可能更改数据的操作(如按下按钮)后调用context.SaveChanges()
。
答案 1 :(得分: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
答案 2 :(得分:0)
也许你喜欢这样的事情:
static class Utilities
{
public static void SaveChanges( this MyEntity entity, Student record, Student SomeNewValue )
{
record.Value = SomeNewValue;
entity.SaveChanges;
}
}
那么你可以像这里一样调用函数:
context.SaveChanges(record, SomeNewValue);