2011-12-03 14 views
0

私のアプリケーションでは、with with bindingsource to entityがあります。私はのBindingSourceにレコードを更新する場合Bindingsourceとエンティティのフレームワークについての3つの質問

Mybindingsource.datasource =( セレクトトン.......どこcontext.mytableでTから).ToList

1)、このレコードがデータベースに更新されます。しかし、新しいレコードを追加したり、バインディングソースのレコードを削除したりすると、データベースは更新されません。何ができますか?

2)bindingsourceのレコードが変更されたかどうかを検出する方法はありますか? (私は、この検出した後、保存ボタンを有効にする)

が変更3.Ifは、レコードのBindingSourceで、どのように私は(保存前)の変更を元に戻すことができ

事前にありがとうございます!

答えて

0

1)バインド元からレコードを削除する場合は、そのレコードをエンティティコンテキストで削除する必要があります。アドオンと同じ

dbContext.mytalbe.Remove(recordToRemove); 

、あなたはそれが標準のWinFormグ​​リッドと異なる可能性がありますので、私は、エンティティ4.1とDevExpress社のグリッドを使用しています、現在

dbContext.mytable.Add(newRecord); 

が必要になります。

私が知ったことは、レコードを追加または削除するコードでは、エンティティdbContextレベルに直接追加/削除してから、変更がコンポーネントに反映されます。そうでなければ、追加/削除は自動的に行われません他の方法などでバインディング側から追加/削除する場合は、 私はあなたが両方を行う必要はないと思うし、私はdbContext側の変更がより簡単だと思う。

2)私が行ったことは、エンティティレコードの状態を確認することです。たとえば、次のコードは、オブジェクトが変更されたかどうかを検出するために使用した関数です。

public bool IsDirty(Purchase purchase) 
     { 
      bool result = false; 

      if (this.dbContext.Entry(purchase).State != EntityState.Unchanged) 
       result = true; 

      return result; 
     } 

3)保存する前に、何もDBに変更されません。したがって、現在のdbContextを単純に破棄して元のデータを持つDBからそのデータを再度取得することができます。それは私が考えることができる最も簡単な方法になります。

希望はあなたを助けるでしょう。

関連する問題