您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

是否可以在LINQ to SQL中使用/访问标量函数?

是否可以在LINQ to SQL中使用/访问标量函数?

如果这就是您的意思,LINQ-to- sql支持与UDF一起使用。只需将UDF拖到设计器图面上即可。这会在数据上下文上创建一个标记[Function(..., IsComposable=true)]或类似的匹配方法,告诉LINQ-to- sql它可以在查询中使用此方法(请注意EF不支持用法)。

然后,您可以在查询中使用它,例如:

var qry = from cust in ctx.Custs
           select new {Id = cust.Id, Value = ctx.GetTotalValue(cust.Id)};

它将变成Tsql之类的东西:

SELECT t1.Id, dbo.MyUdf(t1.Id)
FROM CUSTOMER t1

(或大约)。

它是可组合的事实意味着您可以在查询中使用该值,例如在Where()/中使用WHERE-,从而减少从服务器返回的数据(尽管显然仍需要以某种方式执行UDF)。

这是一个类似的示例显示了在数据上下文中使用的伪UDF,说明未使用该方法的C#版本。

实际上,我目前正在研究这样的UDF,以可组合的方式提供“模型外”数据- 即系统的特定部分需要访问一些不是真的数据(恰好在同一个数据库中)相同模型的一部分,但我想以JOIN有趣的方式。我也有用于此目的的现有SP …因此,我正在考虑将这些SP移植到表格式UDF,这为围绕模型外数据提供了一定程度的合同/抽象性。因此,由于它不是模型的一部分,因此只能通过UDF进行获取- 但我仍然可以将其与常规模型组合在一起。

SQLServer 2022/1/1 18:43:44 有299人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶