2012-01-25 3 views
1

REMARQUE: J'utilise EF 4.2 avec Database First Method et DbContext. C'est le code NOT d'abord. J'essaie d'obtenir le DbContext t4 tempalate pour générer des méthodes Proc mémorisés. Il semble y avoir une fonctionnalité intégrée pour le faire (il est mappé à ObjectContext de base), mais pour une raison quelconque, il refuse obstinément de les générer. Je pense qu'il pourrait avoir quelque chose à voir avec le type de retour (qui est un int simple, pas un type de modèle), mais je ne suis pas sûr.Générateur DbContext et procédures stockées

Avant que quelqu'un ne le dise. Oui, je sais que DbContext ne prend pas en charge les processus stockés, ce qui explique pourquoi le modèle t4 utilise IObjectContextAdapter pour le convertir en ObjectContext. Ceci est une fonctionnalité intégrée.

Dans le passé, les méthodes étaient simplement générées automatiquement. Je ne sais pas pourquoi ce n'est pas maintenant. La fonction apparaît dans le fichier .edmx. Des suggestions sur la façon de résoudre ce problème?

<Function Name="pInsertMemberPayment" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 
    <Parameter Name="xMemberID" Type="int" Mode="In" /> 
    <Parameter Name="xCardHolderName" Type="varchar" Mode="In" /> 
    <Parameter Name="xBillingAddress" Type="varchar" Mode="In" /> 
    <Parameter Name="xBillingCity" Type="varchar" Mode="In" /> 
    <Parameter Name="xBillingState" Type="char" Mode="In" /> 
    <Parameter Name="xBillingZip" Type="varchar" Mode="In" /> 
    <Parameter Name="xAccountNumber" Type="varchar" Mode="In" /> 
    <Parameter Name="xExpirationDate" Type="date" Mode="In" /> 
    <Parameter Name="xRowCreatedSYSUserID" Type="int" Mode="In" /> 
    <Parameter Name="xRowCreatedDateTime" Type="datetime2" Mode="In" /> 
    <Parameter Name="xRowModifiedSYSUserID" Type="int" Mode="In" /> 
    <Parameter Name="xRowModifiedDateTime" Type="datetime2" Mode="In" /> 
    <Parameter Name="xMemberPaymentID" Type="int" Mode="InOut" /> 
</Function> 

Répondre

3

Votre fonction exemple montre stockée définition de procédure SSDL mais il ne montre pas l'option d'import de fonction dans la cartographie des importations CSDL ou fonction dans MSL. Avez-vous créé une fonction d'importation dans le navigateur de modèle pour votre procédure stockée? Je viens de tester le modèle DbContext Generator avec 10 procédures différentes renvoyant des entités, des types complexes, des scalaires et utilisant des paramètres d'entrée et de sortie et générant la méthode dans la classe de contexte pour chacun d'entre eux.

+0

Il me semble qu'il me manque quelque chose. J'ai importé le sproc en utilisant l'option Update Model From Database. Donc, je dois les mapper à Fonction Imports après cela? –

+0

Oui. L'importation via l'assistant les placera dans une partie d'EDMX mais après cela, vous devrez indiquer à EF ce que vous voulez faire avec ces procédures stockées - vous pouvez les mapper pour insérer, mettre à jour, supprimer des opérations pour des entités sera traité par le modèle. –

+0

Ok, je peux l'obtenir pour générer. Mais je n'arrive pas à comprendre comment mapper le paramètre de sortie au type de retour de int. Apparemment, cliquer sur Get Column Information est censé aider, mais cela dit qu'il ne retourne aucune colonne (ce qui n'est pas le cas, je pense que c'est pour les ensembles de résultats). c'est juste un seul paramètre de sortie). –