7

Je suis l'erreurLe mappage de procédures stockées est tout ou rien dans Entity Framework? (FunctionMapping)

Vous ne trouvez pas le InsertFunctionMapping pour 'xxx' EntityType dans le fichier de mappage .

Ce qui est juste parce que c'est vrai. Mais c'est parce que je suis heureux avec EF faisant des inserts pour moi. Je veux simplement remplacer la fonction de suppression.

Je pensais que c'était l'une des améliorations avec EF4? Ou est-ce juste que ça va bien se construire mais quand même pleurer quand vous utilisez les fonctions non mappées? Ou est-ce possible mais je manque juste quelque chose?

Répondre

11

AFAIK. C'est tout ou rien.

Si vous ne mappez pas les trois opérations d'insertion, de mise à jour ou de suppression d'un type d'entité sur des procédures stockées, les opérations non mappées échoueront si elles sont exécutées à l'exécution et qu'une exception UpdateException est levée.

MSDN

1

J'ai le problème identique ou similaire. Je veux remplacer uniquement la fonction de suppression, mais ce n'est pas possible dans EF4 sans surcharger également les fonctions d'insertion et de mise à jour. Dans mon cas, je dois faire cette action pour suppression:

update table set deleted = 1 where id = @id 

Je résolu ce problème en cette façon: Avant d'appeler la méthode context.SaveChanges(true) je lance ce code

foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted)) 
{ 
    entry.ChangeState(EntityState.Modified); 
    entry.Entity.GetType().GetProperty("deleted").SetValue(entry.Entity, true, null); 
} 

Je suis débutant dans EF . Maintenant, je cherche seulement comment résoudre certains problèmes avec EF que je dois résoudre avant de commencer à développer une application basée sur EF. Mais maintenant, il semble que cette solution devrait fonctionner. J'espère.

Questions connexes