2012-06-18 83 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); 
相關問題