2011-07-05 3 views
0

私はLinqクエリからドメインオブジェクトのリストを返すライブラリ関数を持っています。データソースが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 to sqlでこれらの両方を持つことはできないと思います。しかし、うまくいけば誰かが私を間違っていると証明するでしょう – Chad

答えて

0

アップルが支援し、すべての操作コードを含むUIAppleを作成しました。例えば

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(); 
関連する問題