2010-11-25 6 views
3

DevExpress aspxGridViewでEntityDataSourceを使用しているASP .net C#プロジェクトがあり、選択、更新、挿入、削除することができます。しかし、私は代わりに、基本的にちょうど実際の削除ではなく、代わりに(単にアクティブフラグをfalseに設定する)更新を行うカスタム削除メソッドを使用したいと思います。EntityDataSourceカスタムでオーバーライドする

EntityDatasourceのイベントまたはグリッドのイベントを削除する必要があると感じましたが、これはEntity Framework 4.0の最初のプロジェクトであり、まだ足元を見つけています。私は、edmxコードの背後にファイルのオーバーライド更新メソッドを作成する必要があるかどうかわかりません。

大変感謝しています。

答えて

6

ハンドリングをSavingChangesイベントに登録して、必要なウォッチを実行できます。このような 何か:

public partial class AWEntities{ 

partial void OnContextCreated() 
{ 
    this.SavingChanges += new EventHandler(context_SavingChanges);// Register the handler for the SavingChanges event. 
} 

private static void context_SavingChanges(object sender, EventArgs e)// SavingChanges event handler. 
{ 
    // Get all in Deleted state 
    foreach (ObjectStateEntry entry in 
     ((ObjectContext)sender).ObjectStateManager.GetObjectStateEntries(EntityState.Deleted)) 
    { 
     if (entry.Entity.GetType() == typeof(MyType))) 
     { 
      // do what you want. 
     } 
    } 
} 
} 

http://msdn.microsoft.com/en-us/library/cc716714.aspx

ORあなたがあなたが望むように削除を実行するストアドプロシージャをマッピングすることができます。私は2番目のオプションをより良い好き http://learnentityframework.com/LearnEntityFramework/tutorials/using-stored-procedures-for-insert-update-amp-delete-in-an-entity-data-model/

...

+0

おかげロベルトは、CRUD操作のマッピングストアドプロシージャと – Washburn

+0

私の唯一の懸念は、私がアクションを実行するユーザーを追跡したいということであるストアドプロシージャオプションのマッピングを行ってきましたこれは、参照されるたびに現在のユーザーで更新されたエンティティにユーザーIDフィールドがない限りは実行できません。アプリケーションがデータベースとは異なるサーバーから実行されている場合、責任を負うユーザーを追跡するために偽装とトリガーに頼ることはできません。その目標を念頭に置いて、最初の提案は私のために良く見えます。 – Jesslyn

+0

削除SPを指定すると、挿入アクションと更新アクションにもSPを指定する必要があることに注意してください。 – ClearCloud8

関連する問題