¿Cómo ejecuto un procedimiento almacenado en ADO.NET Entity Framework?

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

Pregunta

¿Cómo utilizar el procedimiento almacenado en ADO.NET Entity Framework?

Mi mesa: MyCustomer

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

Mi procedimiento almacenado

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

Mi código C #

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

El error:

El lector de datos es incompatible con el 'TestAdonetEntity2Model.MyCustomer' especificado. Un miembro del tipo, 'CustomerID', no tiene una columna correspondiente en el lector de datos con el mismo nombre.

Se produjo un error debajo de la última línea de código (llamada a 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>

Añadido está bien. Todo proceso añadido está bien. Pero después de la edición, se produce un error anterior.

Respuesta aceptada

Creo que lo que necesita hacer es importar una función con las herramientas de EF y llamar a la función importada como

DataContext.MyFunctionName(storedProcedureParamer1, storedProcedureParamer2)

Cómo: Importar un procedimiento almacenado


Respuesta popular

Para llamar a los procedimientos almacenados para las operaciones de consulta, puede usar SqlQuery en Entityframework, que es muy útil

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

Para las Operaciones de Ejecución de Operaciones (Transacciones) puede usar

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

Tenga en cuenta que el objeto _dbContext de su clase de contexto se hereda de DbContext Class of Entityframework



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué