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.

1 comentario:

  1. casino chipn slot casino chipn slots slot casino chipn slots slot casino chipn slots
    casino chipn slots casino chipn 광주 출장샵 slots slot 나주 출장마사지 casino 김제 출장안마 chipn 안양 출장샵 slots 삼척 출장마사지 chipn slots chipn slots chipn slots slot slot machine poker machine

    ResponderEliminar