2011-02-08 109 views
0

我在ASP.NET應用程序中使用ObjectDataSource。實體框架4合併兩個實體之間的更改

使用ASPxGridView。當更新它回到數據訪問層並嘗試更新實體時,現在我可以看到當實體到達更新方法時具有一些合適的實體(列,可見= false),visible = false列沒有值。

我不想顯示所有列......如果我需要30列中的3列,該怎麼辦?所以我想我會從上下文中獲取原始實體併合並來自更新實體的差異。

任何想法,如果這可能發生使用實體框架?或任何():)

謝謝

回答

1

您是使用分離的實體,並只修改所選屬性=>你是唯一一個誰知道哪些屬性進行了修改,你必須編寫代碼中複製值這些屬性更新實體。有更新選定屬性的不同方法 - 您可以使用simple approach或者您可以構建repository

編輯:

如果您想對ObjectDataSource調用更新時得到整個對象必須傳遞整個對象網格(客戶)。這意味着您已將所有對象屬性綁定到某些控件。簡單的方法是使用HiddenField控件。但是在隱藏字段的情況下,您不能確定該用戶不會修改可能導致不需要的更新的發佈值。例如,假設您將產品價格發佈到隱藏字段中。如果用戶使用某種工具來攔截請求並更改價格,則會將其更新到您的數據庫中!

另一種方法是創建您的自定義網頁控件,它將存儲值ViewState而不是簡單的隱藏輸入。

+0

我認爲現在最好的和有效的方法應該是獲取網格行的整個數據源對象,並且這至少應該是自動的。所以你按更新和ObjectDataSource去更新(T實體)傳遞整個T對象....這應該是最簡單的:)我怎麼能做到這一點?任何想法? – 2011-02-08 23:25:13