2009-07-15 4 views
0

Voici mon code:ASP.net Dynamic Data - OnPropertyChanging Non Mise à jour des autres colonnes

partial void OnisApprovedChanging(bool value) 
{    
    this.dateApproved = DateTime.Now;   
} 

« dateApproved » est mis à jour dans la logique métier, mais ce changement ne soit appliqué à la table de base de données. J'ai vu des exemples où les colonnes DateUpdated sont mises à jour chaque fois qu'une modification est apportée à une table, mais je ne souhaite que mettre à jour l'horodatage lorsque ce champ est mis à jour et je ne suis pas sûr du meilleur moyen d'accéder au DataContext de cette portée. Dois-je instancier le contexte de données et le mettre à jour manuellement?

EDIT fait quelques recherches plus poussées, et a constaté que certains blogs ont suggéré d'ajouter la logique métier sur la mise à jour comme celui-ci:

public partial class DataContext : System.Data.Linq.DataContext 
{ 
    partial void Updateaccount(account instance) 
    { 
     //business logic here  
    } 
} 

Cependant, je ne peux pas déterminer un moyen de savoir si des domaines particuliers ont changé . Des idées?

Répondre

0

Trouvé ceci est le moyen d'obtenir l'entité d'origine et de faire des comparaisons.

partial void Updateaccount(account instance) 
{    
    account acctPriorToUpdate = accounts.GetOriginalEntityState(instance); 
    if (instance.isApproved != acctPriorToUpdate.isApproved) 
    { 
     //Do Stuff 
    }    
    this.ExecuteDynamicUpdate(instance); 
}