gpt4 book ai didi

c# - 我可以扩展 LINQ-to-SQL 支持的运算符吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:44 25 4
gpt4 key购买 nike

如果我非常想这样做,是否可以向 LINQ-to-SQL 添加额外的 LINQ 构造(如果创建我自己的 LINQ 提供程序,我就可以这样做)?例如,许多内置的 LINQ 运算符(XYZ.Any())直接转换为 SQL(例如 IF EXISTS(XYZ))。

如果我需要一个专门的构造,我什至能够扩充该集合,还是必须将其融入实际的 LINQ-to-SQL 提供程序中?

我将如何着手添加新的运算符实现? C# 扩展方法是否足以作为 Hook 来完成这项工作?

如果答案是肯定的,是否有人愿意通过 LINQ-to-SQL 生成的动态 SQL 替换大部分(全部?)存储过程功能?

最佳答案

理论上,您可以向 LINQ 提供程序添加对任意表达式的支持,但 Pavel 是正确的,LINQ to SQL 不能作为起点。我会研究 SubSonic 或 NHibernate,它们也有正在开发的 LINQ 提供程序。一旦提供者支持表达式,您只需要在 IQueryable<T> 上构建一个等效的扩展方法。 - 反射(reflect)System.Linq.Queryable了解详情。

也就是说,解析表达式树绝对不适合胆小的人。除非您真的对 AST 理论感兴趣,否则以“正常”方式扩展 OSS ORM 可能会更容易。

关于c# - 我可以扩展 LINQ-to-SQL 支持的运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1308819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com