jueves, 15 de marzo de 2012

Llamar Stored Procedure que devuelve Multiples Resultados desde Linq

En esta oportunidad me hice un StoredProcedure que me devuelve múltiples resultados y no me funcionaba la llamada a este desde Linq.  Me daba el siguiente error al agregar el SP al dbml:

Error: Unknown Return Type, The return types for the following stored procedures could not be detected

Si tienen un problema similar, esto se debe a que el SP devuelve múltiples resultados y se resuelve modificando manualmente el designer del dbml.  La forma predeterminada es la siguiente:

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.TuSP")]
public object spDevuelveInfo()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((int)(result.ReturnValue));
}

Y es de esta forma en que se debe dejar:

[global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.TuSP")] 
[ResultType(typeof(Info))] 
public IMultipleResults spDevuelveInfo() 
{  
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()));
return (IMultipleResults)(result.ReturnValue); 
}

"Info" en este caso es una clase serializable que deben tener:

[Serializable]
public class Info
{
    public string Dato1 { get; set; }
    public string Dato2 { get; set; }
    public string Dato3 { get; set; }
}

De nuevo salu2.

No hay comentarios:

Publicar un comentario