LINQ-to-SQL admite el uso con UDF, si eso es lo que quiere decir. Simplemente arrastre el UDF a la superficie del diseñador y listo. Esto crea un método de coincidencia en el contexto de datos, marcado [Function(..., IsComposable=true)]
o similar, que indica a LINQ-to-SQL que puede usar esto en las consultas (tenga en cuenta que EF no admite este uso).
A continuación, utilizarlo en su consulta como:
var qry = from cust in ctx.Custs
select new {Id = cust.Id, Value = ctx.GetTotalValue(cust.Id)};
que se convertirá en TSQL algo como:
SELECT t1.Id, dbo.MyUdf(t1.Id)
FROM CUSTOMER t1
(o allí, rotondas).
El hecho de que sea composable significa que puede usar el valor en las consultas, por ejemplo en un Where()
/WHERE
, y así reducir los datos traídos del servidor (aunque obviamente la UDF aún deberá ejecutarse en de alguna manera).
Here's a similar example, mostrando un pseudo-UDF al usarlo en un contexto de datos, que ilustra que no se usa la versión C# del método.
Actualmente, estoy buscando en tales UDFs para proporcionar datos "fuera de modelo" de una manera composable, es decir, una parte particular del sistema necesita acceder a algunos datos (que están en la misma base de datos) que no es realmente parte del mismo modelo, pero que quiero JOIN
de maneras interesantes. También tengo SP para este propósito ... por lo tanto, estoy considerando transferir esos SP a UDF tabulares, lo que proporciona un nivel de contrato/abstracción alrededor de los datos fuera del modelo. Entonces, como no forma parte de mi modelo, solo puedo obtenerlo a través del UDF, pero conservo la capacidad de componer esto con mi modelo habitual.
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – gotqn
@gotqn: De hecho, y ciertamente lo habría hecho hoy. Tenga en cuenta que esta respuesta fue publicada en la infancia de Stack Overflow ... –