• ALinq Dynamic


    年度开源力作,博客园首发,回馈广大用户。

    2012-12-03 14:52 by 麦舒, 4241 阅读, 52 评论, 收藏编辑

    好久没有在博客园里抛头露面,距离上一篇博客,想来也有一年了吧。这一年,虽然没有写博客,但是还是一直在关注博客园的。这一年当里,博客园似乎变得更为热闹了,但是,发布作品的似乎比之前少了很多,能够一直坚持下来的更是少。很多用户都问到我,ALinq 很什么时候发布新版,还是已经停止更新了。不止一次说过,只要有一个用户在用我的产品,都会更新、维护下去的。因为为什么?梦想!我要开发出世界一流的软件产品,体现自己的价值。

    这个开源项目,现在暂且称之为 ALinq Dynamic 吧,原来是准备作为 ALinq3 的一部份的,但是由于现在已经不再全职投入 ALinq 的开发了,担心有些 BUG 无法及时给用户解决,所以决定把它作为一个独立的开源目,发布给各位用户使用。现在这个项目已经放到了 CodePlex 上了,网址是:http://esql.codeplex.com/ 。

    现在给大家简单介绍一下这个项目吧。

    项目简介:

    ALinq Dynamic 是一个将 Entity SQL 语句转换为 Linq Expression 的框架,它不但适用于 ALinq,同样也可以应用于Linq to SQL。

    功能特点:

    1、支持 Entity SQL 的语法查询。已经实现了Entity Framework 中 Entity SQL 的绝大部份功能。为什么不自创一种语法?因为我希望能尽可能减少用户的学习成本。

    2、与 Linq 表达式无缝对接,动态查询,有一个很大的缺点,就是查询结果是弱类型的。但是,在 ALinq Dynamic 里通过索引器查询成功解决了这个问题。

    为了让大家对它有个直观的认识,给出一个典型的例子。

    复制代码
    var esql = @"select o.OrderId, o.EmployeeId, d.ProductId, p.UnitPrice 
                 from Orders as o 
                      Inner Join OrderDetails as d on o.OrderId == d.OrderId
                      Inner Join Products as p on d.ProductId == p.ProductId";
    
    
    var q2 = db.CreateQuery<IDataRecord>(esql);
    var q3 = q2.Select(o => new { OrderId = (int)o["OrderID"], 
                                  EmployeeId = (int)o["EmployeeID"], 
                                  ProductId = (int)o["ProductId"] })
               .Where(o => o.OrderId > 1000)
               .Join(db.Employees, o => o.EmployeeId, e => e.EmployeeID,
                              (a, b) => new { a.EmployeeId, 
                                              a.OrderId, 
                                              a.ProductId,
                                              b.City, 
                                              b.Address })
               .Take(10);
    
    
    q3.Execute();
    复制代码

    谁会需要它?

    需要用到动态查询的用户。我想,绝大部份用户都会碰到动态查询这个问题,但是,现有的解决方案,都不够好。ALinq Dynamic 的出现,将 会为 ALinq 和 Linq to SQL 用户,提供一个更为好用的解决方案。

    如何使用:

    1、到 CodePlex 上下载压缩包,网址:http://esql.codeplex.com/ ,然后解压缩。

    2、如果你是 ALinq 用户,打开 DynamicQuery.sln 或者 DynamicQuery_VS08.sln 解决方案,其中前者是适用于 VS 2010,后者适用于 VS 2008,

    3、如果你是 Linq to SQL 用户,打开 DynamicQuery.LinqToSql.sln (仅适用于 VS 2010 ) 。

    4、打开测试项目,然后修改 App.Config,该文件在 DynamicQueryTest 目录下,所用的数据库为 SQLite 和 SQL Compact。

    5、查看,并运行单元测试中的范例。

    关于文档: 文档和教程,随后将至,请大家留意我的博客。

    技术支持: 1、在我的博客留言,我会尽可能地抽时间来答复大家的问题。 2、加入 ALinq 用户的 QQ群(71418067)。

    谢谢大家的阅读,麻烦大伙点一下推荐,再次谢谢大家。 ^_^ 

     
  • 相关阅读:
    SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
    Spark家族:Win10系统下搭建Scala开发环境
    Linux系统:centos7下搭建Rocketmq4.3中间件,配置监控台
    Linux系统:Centos7环境搭建Redis单台和哨兵集群环境
    Linux系统:常用Linux系统管理命令总结
    Linux系统:centos7下安装Jdk8、Tomcat8、MySQL5.7环境
    Linux系统:centos7下搭建ZooKeeper3.4中间件,常用命令总结
    SpringBoot2.0 整合 Redis集群 ,实现消息队列场景
    SpringBoot2.0 基础案例(17):自定义启动页,项目打包和指定运行环境
    SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2800698.html
Copyright © 2020-2023  润新知