2012-06-18 54 views
1

之外我有一个从后续的LINQ查询来记录:C#保存实体对象上下文

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

我通常一个新的值赋给记录是这样的:

record.Value = SomeNewValue; 

然后我会做一个

context.SaveChanges; 

这一切工作正常。我的问题是:如果我将它传递给另一个函数或记录是从函数返回的,我怎样才能保存相同的记录?我正在寻找这样的事情:

context.SaveChanges(record); 
+0

你的意思是你对该记录做了另一次修改? – Boomer

回答

1

触发您的功能有问题的操作应创建和管理context。如果它是一个ASP.NET MVC应用程序,我建议您在请求开始时设置上下文,并在完成时调用context.SaveChanges。在Winforms/WPF应用程序中,您可能希望在应用程序的整个生命周期保持context,并且在可能更改数据的任何操作(如按按钮)后调用context.SaveChanges()

+0

我将该上下文作为模块级别的变量。这将工作。 Th – Arcadian

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

+0

为上下文添加记录,但不添加到数据库 – Boomer

+0

@Boomer Ha - 您的想法和我一样。刚刚添加了最后一条评论。 =) –

0

也许会做你喜欢的事是这样的:

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

,那么你可以调用函数喜欢这里:

context.SaveChanges(record, SomeNewValue); 
相关问题