Appel de la fonction Entity Framework appel depuis le code

entity-framework

Question

J'ai donc une procédure stockée appelée Spr_EventLogCreate définie dans ma base de données. J'ai créé une importation de fonction dans mon modèle de données appelée LogEvent sans type de retour, et je peux voir cette fonction dans l'arborescence du navigateur de modèle à l'adresse suivante:

MyModel.edmx> MyModel> EntityContainer> Importations de fonctions> LogEvent.

J'ai alors pensé pouvoir appeler la fonction dans mon code comme suit:

var context = new MyModelEntities();
context.LogEvent(...);

Mais la méthode LogEvent () n'est pas présente.

Je dois être vraiment stupide ici, mais comment appeler ma fonction importée?

Utilisation de VS 2008 et EF 3.5.

Réponse acceptée

Il n'existe aucun moyen de générer le code appelant la fonction sans réaccorder un jeu de résultats à partir de la conception dans le concepteur Microsoft par défaut. Vous pouvez écrire du code en l'appelant manuellement dans la définition partielle de votre classe de contexte. Voici un exemple:


        public void EmpDelete (global::System.Nullable PEMPNO, global::System.Nullable PDEPTNO)
        {
            if (this.Connection.State != System.Data.ConnectionState.Open)
              this.Connection.Open();
            System.Data.EntityClient.EntityCommand command = new System.Data.EntityClient.EntityCommand();
            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.CommandText = @"DataSourceModel1Entities.EmpDelete";
            command.Connection = (System.Data.EntityClient.EntityConnection)this.Connection;
            EntityParameter PEMPNOParameter = new EntityParameter("PEMPNO", System.Data.DbType.Decimal);
            if (PEMPNO.HasValue)
                PEMPNOParameter.Value = PEMPNO;
            command.Parameters.Add(PEMPNOParameter);
            EntityParameter PDEPTNOParameter = new EntityParameter("PDEPTNO", System.Data.DbType.Decimal);
            if (PDEPTNO.HasValue)
                PDEPTNOParameter.Value = PDEPTNO;
            command.Parameters.Add(PDEPTNOParameter);
            command.ExecuteNonQuery();
        }


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow