2016-03-18 19 views
1

EF6とネストされた子オブジェクトを使用してデータグリッドビューに編集データを保存しようとすると、デッドエンドで実行されています。期待して誰かが正しい方向に私を指すことができます。..エンティティフレームワーク6 datagridviewネストされた子データバインド

を私は2つの実体があります イド..名前:

public class Customer 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Function { get; set; } 
} 

public class Function 
{ 
    public int Id { get; set; } 
    public int Property { get; set} 
} 

次へ]を、私はそうのようなDataGridViewの中で機能から顧客と子オブジェクトを表示したいです.. Function.Property

Datagridviewは、AutoGenerateColumnsを無効にすることによってカスタマイズされます。私はのModelViewを作成し

public class CustomerModelViewObject 
{ 
    public int Id { get; set; } 
    public string Name{ get; set; }    
    public int f_prop { get; set; } /* Function.Property */ 
} 

これまでのところ、とても良いDataPropertyNameは、以下のオブジェクトに設定されています。私はアイテムを見ることができ、それらを編集することができます。 「保存」ボタンをクリックすると、データベースに反映するための変更が必要ですが、動作させることはできません。私は2日間探していましたが、無駄に探しました。

クエリおよびデータソース:

var q = from it in _context.KlantenConfigs 
select new CustomerModelViewObject 
{ 
    Id = it.Id,       
    Name= it.Name, 
    f_prop= it.Function.Property      
}; 

klantenConfigDataView.DataSource = q.ToList(); 

私は本当に誰かがこれで私を助けることができると思います。私は永遠に感謝します!保存するには:-)

答えて

0

、あなたは(あなたのセーブイベント後)に必要なので、これを参照して、DataGridViewのから更新された値を取得_context.KlantenConfigsで関連エンティティを更新してから行う簡単な方法について_context.SaveChanges()

を呼び出します回答:https://stackoverflow.com/a/21284808/3997704

+0

こんにちは、お返事ありがとうございます。あなたのセーブイベントの後、あなたはどういう意味ですか?あなたはそれが変更されているかどうかを確認するためにすべての行とプロパティをチェックしてから、関連するエンティティにマップする必要がありますか?私はこれを達成する方法がわかりません。どのように更新された値を取得しますか? –

+0

私はあなたに役立つ答えを見つけました:http://stackoverflow.com/a/21284808/3997704 – mnwsmit

+0

これで、間にバインディングソースを追加しようとしました: BindingSource src = new BindingSource(); 私のクエリq src.DataSource = q.ToList(); klantenConfigDataView.DataSource = src; これで、私のdatagridviewに余分な空行が表示されるようになりました。私は前にそれを持っていなかった。しかし、_context.savechanges()を呼び出すと、何も起こりません。 SQLプロファイラでは、動くものは何も見えません。文脈は何も変わったとは見ません。私は何かが欠けているに違いありません。 –

関連する問題