2011-07-05 53 views
0

我有一個庫函數,它返回來自Linq查詢的域對象列表。自定義datagridview的列,其數據源來自linq

IList<Apple> getApplesByCriteria(...); 

我將DataGridView的DataSource屬性綁定到此函數的結果。一切運作良好。現在我想操縱Apple的屬性。演示域對象(UIApple)與原始域對象(Apple)不同,其中

UIApple map(Apple apple); 

將一個轉換爲另一個。

如果我創建一箇中間類 - UIApple,我需要做什麼才能將DataGridView的編輯持久化回數據庫?我瞭解到,加入[Browsable(false)]可以隱藏欄目。但是,我不想1)用UI概念污染域對象; 2)更改自動生成的源代碼。

+0

這是LINQ到SQL? EF(35或4)?或者有些不同? – Chad

+0

Linq-To-SQL,.Net 3.5。 –

+0

我不認爲你可以將這兩個與linq到SQL。但希望有人會證明我錯了。 – Chad

回答

0

我創建了UIApple,它由Apple支持幷包含所有操作代碼。

例如:

class Apple { 
    // generated by Visual Studio 
    public int Color { ... 
} 

class UIApple { 
    private Apple _domain; 
    public string Color 
    { 
     get { if(_domain.Color == 0) return "Black"; } 
     set { if(value == "Black") _domain.Color = 0; } 
    } 
    // hide all unwanted attributes   
} 

要在編輯堅持到底,

UIApple uiApple; 

// some editing through UI 

// to commit - 
db.SubmitChanges();