Dado que lo único que funciona ahora es asignar el tipo de devolución a una entidad, una solución consiste en crear una vista que corresponda a los datos de devolución y crear una entidad para la vista. Esto solo funcionará si el SP está haciendo un SELECCIONAR para devolver un conjunto de resultados, no un valor de retorno. Tengo esto para trabajar con una aplicación de ejemplo, así: SP:
ALTER PROCEDURE [dbo].[DoSomething]
@param1 varchar(50),
@param2 varchar(50)
AS
BEGIN
DECLARE @ID INT
SET NOCOUNT ON;
INSERT tmp_header (fname, lname) VALUES (@param1, @param2)
SET @ID = SCOPE_IDENTITY()
SELECT @ID AS 'id'
END
VISTA:
CREATE VIEW [dbo].[View_1]
AS
SELECT 0 as id
crear el escenario del tipo de retorno a la importación View_1 función y construir el modelo.
en código:
class Program
{
static void Main(string[] args)
{
using (PS_RADSTESTEntities ctx = new PS_RADSTESTEntities())
{
EntityConnection ec = ctx.Connection as EntityConnection;
ec.Open();
DbTransaction txn = ec.BeginTransaction();
ObjectResult<View_1> result = ctx.DoSomething("Toby", "Kraft");
View_1 row = result.Single();
int id = row.id;
// do some other interesting things ...
ctx.SaveChanges();
txn.Commit();
}
}
}
Asegúrese de ajustar los nombres de las columnas exactamente iguales entre la vista y SP. Toby
Gracias. La interfaz de usuario es engañosa, ya que permite seleccionar tipos de retorno escalar y nulo. –
Tengo una pregunta de seguimiento sobre el uso de CreateDbCommand. Ver: http://stackoverflow.com/questions/587173/execute-a-stored-procedure-in-entity-framework-from-within-an-ado-net-dataservice –