2010-11-25 5 views
3

J'ai un projet ASP .net C# en utilisant un EntityDataSource avec un DevExpress aspxGridView et il fonctionne très bien, ce qui me permet de sélectionner, mettre à jour, insérer et supprimer. Cependant, je voudrais utiliser une méthode de suppression personnalisée qui, au lieu de cela, effectue simplement une mise à jour (en plaçant simplement un drapeau actif sur faux) plutôt qu'une vraie suppression. J'ai le sentiment que j'ai besoin d'utiliser l'événement entitydatasource ou les grids onrowdeleting, mais c'est mon premier projet avec Entity Framework 4.0, donc je trouve toujours mes pieds. Je n'ai aucune idée si j'ai besoin de créer une méthode de mise à jour overrides dans le code edmx derrière le fichier.EntityDataSource Remplacer par une suppression personnalisée

Appréciez grandement toute aide.

Répondre

6

Vous pouvez enregistrer un gestionnaire sur l'événement SavingChanges pour effectuer ce que vous voulez. quelque chose comme ceci:

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

OU Vous pouvez mapper une procédure stockée pour effectuer votre supprimer la façon dont vous voulez. http://learnentityframework.com/LearnEntityFramework/tutorials/using-stored-procedures-for-insert-update-amp-delete-in-an-entity-data-model/

J'aime mieux la deuxième option ...

+0

Merci Roberto, est allé la cartographie de l'option de procédures stockées – Washburn

+0

Mon seul souci de cartographie des procédures stockées pour des actions CRUD est que j'aime suivre l'utilisateur d'exécuter l'action , ce que je ne peux pas faire à moins d'avoir un champ d'identifiant utilisateur dans cette même entité qui est mise à jour avec l'utilisateur courant chaque fois qu'il est référencé. Lorsque vos applications sont exécutées à partir d'un serveur différent de votre base de données, vous ne pouvez pas compter sur l'emprunt d'identité et les déclencheurs pour suivre l'utilisateur responsable. Avec cet objectif en tête, la première suggestion me semble meilleure. – Jesslyn

+0

Attention, si vous spécifiez un SP de suppression, vous devrez également fournir un SP pour les actions d'insertion et de mise à jour ... – ClearCloud8

Questions connexes