Comment exécuter une procédure stockée dans ADO.NET Entity Framework?

.net c# entity-framework linq-to-sql

Question

Comment utiliser une procédure stockée dans ADO.NET Entity Framework?

Ma table: mon client

Columns:
CustomerID    PK   int 
Name               nvarchar(50)
SurName            nvarchar(50)

Ma procédure stockée

ALTER procedure [dbo].[proc_MyCustomerAdd]
(@Name nvarchar(50),
@SurName nvarchar(50)
)
as 
begin
  insert into dbo.MyCustomer([Name], SurName) values(@name,@surname)
end

Mon code C #

private void btnSave_Click(object sender, EventArgs e)
{
   entityContext.MyCustomerAdd(textName.Text.Trim(), textSurName.Text.Trim());
   entityContext.SaveChanges();
}

L'erreur:

Le lecteur de données est incompatible avec le 'TestAdonetEntity2Model.MyCustomer' spécifié. Un membre du type 'CustomerID' n'a pas de colonne correspondante dans le lecteur de données avec le même nom.

Une erreur est survenue sous la dernière ligne de code (appel à ExecuteFunction):

global::System.Data.Objects.ObjectParameter surNameParameter;
if ((surName != null))
{
   surNameParameter = new global::System.Data.Objects.ObjectParameter("SurName", surName);
}
else
{
   surNameParameter = new global::System.Data.Objects.ObjectParameter("SurName", typeof(string));
}
<b>return base.ExecuteFunction<MyCustomer>("MyCustomerAdd", nameParameter, surNameParameter);</b>

Ajouté c'est ok. Chaque processus ajouté est ok. Mais après l'édition, l'erreur ci-dessus se produit.

Réponse acceptée

Je pense que ce qu'il faut faire, c'est importer une fonction avec l'outillage EF et appeler la fonction importée comme

DataContext.MyFunctionName(storedProcedureParamer1, storedProcedureParamer2)

Comment: importer une procédure stockée


Réponse populaire

Pour appeler des procédures stockées pour des opérations de requête, vous pouvez utiliser SqlQuery dans Entityframework, ce qui est très utile.

_dbContext.Database.SqlQuery<EntityType>("sp_name",parameters).ToList();

Pour les opérations d'exécution (transactions), vous pouvez utiliser

_dbContext.Database.ExecuteSqlCommand( 
                    @"UPDATE tblname SET Rating = 5" + 
                        " WHERE Name LIKE '%Entity Framework%'" 
                    );

Veuillez noter que l'objet _dbContext de votre classe Context hérite de la classe DbContext de Entityframework.



Related

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