惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
博客园_首页
U
Unit 42
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
MongoDB | Blog
MongoDB | Blog
美团技术团队
H
Help Net Security
G
Google Developers Blog
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
M
MIT News - Artificial intelligence
腾讯CDC
IT之家
IT之家
Vercel News
Vercel News
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
Last Week in AI
Last Week in AI
I
InfoQ
博客园 - 司徒正美
A
About on SuperTechFans

博客园 - 风云

Vane.Dispatch 1.0.0 发布:一个与容器、传输层零耦合的 .NET 服务分发引擎 MiniLog 1.0 GA 发布:零分配、零依赖的 .NET 高性能日志框架 从实战到生产:Acl.Excel 八大场景与避坑指南(终篇) 写入分配砍掉 63%:Acl.Excel 绕过 XmlWriter 字节直写 零依赖纯 C# DEFLATE 引擎:2916 行移植 libdeflate 一个 42KB 的 Excel 如何撑爆 4.5PB?Acl.Excel 8 层防御 Acl.Excel 跨库基准:读取最高快 32.8 倍 24B消灭上亿次装箱:Acl.Excel零装箱设计 百万行Excel如何恒定内存?Acl.Excel流式拆解 不依赖 NPOI/ClosedXML,纯 C# Excel 库如何做到 30 倍性能? 2-30 倍性能:Acl.Excel 设计哲学与零依赖 Acl.Excel vs MiniExcel 1.45.0:百万行读写实测,托管内存低至 1/37,QueryFirst 平分秋色 优化纯 C# DEFLATE 压缩器:从 0 到超越 .NET 内置的完整历程 从零实现 DEFLATE 压缩器:纯 C# 移植版如何在 Excel 场景超越 .NET 内置? Docker下构建centos7容器无法使用systemctl命令的解决办法 重新诠释的OSGi规范 让我们的领域逻辑彻底裸奔吧 NLite.Web 组件更新日志 Ndf 组件更新日志 新年首作-ELinq+T4模版引擎制作多文件实体代码生成器 ORM组件 ELinq (五)-映射配置之XML ORM组件 ELinq (四)-映射配置之FluentAPI ORM组件 ELinq (三)-映射配置之Attribute NLite 更新日志 ORM组件 ELinq 更新日志 ORM组件 ELinq (二) 映射配置之Table 用户中心 - 博客园 ORM组件 ELinq 系列 ORM组件 ELinq (一)首航之旅 年度开源力作-ORM组件 ELinq诞生了
国内开源ORM组件 ELinq正式版发布
风云 · 2012-12-08 · via 博客园 - 风云

  前言:

    自从发布年度开源力作-国产ORM框架ELinq诞生了 这篇博文后,得到了很多园友的支持,另外ELinq群:271342583群的群友也非常活跃,大家一起为该框架起了一个响亮的名字:ELinq(之前为NLite.Data),另外一些网友建议的新特性,比如支持类似EF框架的DbContext,可以直接继承DbContext,而不需要手工实现Dispose,可以直接定义DbSet类型的成员属性,而不需要手工对其赋值,增加在调试时可以直接方便的看到Sql内容,而不是通过日志,可以方便的查看SQL的参数等等,为了快速的回馈广大网页的支持特发布该版本表示感谢!

  更新日志:

  ELinq 0.4 2012/12/8 发布:

1. 组件名称由NLite.Data 改为ELinq,命名空间没变,保持良好的向下兼容性
2. 开放DbContext 类,使其允许被直接继承,简化ELinq使用DbContext的复杂度
3. 开放DbSet 的SqlText和ExecutePlan 属性接口,方便DbSet在运行时方便的调试,可以直接查看SQL和执行计划

     NLite.Data 2012-12-3 RC2 发布

1. 修复通过HashTable进行删除的Bug
2. 支持通过connectionString 和providerName 作为参数来配置
3. 使MySQL 支持无符号类型
4. 在TableAttribute中添加Schema 属性
5. 添加基于版本号机制的并发冲突检查机制
6. 移除在DbHelper中对Position参数支持机制,并重构和简化DbHelper,使DbHelper仅仅支持命名参数
7. 添加Fluent映射Api
8. 重构表达式ExpresionBuilder,使其可以自定义扩展
9. 使Oracle 支持自定义序列功能

    NLite.Data 2012-11-16 RC1 发布

1. 重构EntityModel 和MemberModel
2. 优化系统性能
3. 完善并详细测试SQLServer、Oracle、MySql,SQLite、SqlCE、Access的基本数据类型的相互转换函数
4. 添加公共接口的代码注释
5. 简化并增强增删改操作功能

 Demo (国内开源ELinq ORM 框架-首航之旅  这篇文章的例子为原型)

 1. 在Nuget控制台中输入:install-package ELinq

 2. 在配置文件中添加连接字符串配置信息

  <connectionStrings>
    <clear/>
    <add providerName ="System.Data.OleDb" name="Northwind" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Northwind.mdb;Persist Security Info=True"/>
  </connectionStrings>

3. 实体类

    public class Customer
    {
        public string CustomerID;
        public string ContactName;
        public string CompanyName;
        public string Phone;
        public string City;
        public string Country;
    }

4. 建立OR映射关系,经过观察发现实体的字段和表Customers的列以及主键都符合ELinq的约定规则,故不需要手工映射即可,只有实体类名Customer和表名Customers不一致,需要手动建立映射,具体的方法有 a. 基于标签的方式:TableAttribute; b. 基于命名策略的方式 c. 基于FluentMapping 的方式,在这里只介绍基于标签的方式

   [Table(Name = "Customers")]
    public class Customer
    {
        public string CustomerID;
        public string ContactName;
        public string CompanyName;
        public string Phone;
        public string City;
        public string Country;
    }

5. 创建DbConfiguration并注册OR映射关系

static DbConfiguration dbConfiguration = DbConfiguration
            .Configure("Northwind")
            .AddClass<Customer>()
            .SetSqlLogger(()=>new SqlLog(Console.Out));

6. 创建DbContext Class(该DbContex 的使用方式是该版本刚刚添加的,之前的使用方式仍然保持不变)

    public class NorthwindContext : DbContext
    {
        static DbConfiguration dbConfiguration = DbConfiguration
            .Configure("Northwind")
            .AddClass<Customer>()
            .SetSqlLogger(()=>new SqlLog(Console.Out));

        public NorthwindContext()
            : base(dbConfiguration)
        {
        }

        //这里并没有对Custmers 只读字段进行赋值操作,系统会自动进行
        public readonly IDbSet<Customer> Custmers; 
    }

7. 简单的Access分页测试代码如下:(注意由于受到Access数据库本省的限制,Access的分页必须包含排序字段,另外Skip谓词必须在Take的前面)

            using (var ctx = new NorthwindContext())
            {
                var customers = ctx.Custmers;
                var q = customers.OrderBy(p => p.City).Skip(10).Take(10);
                var list = q.ToList();

                foreach (var m in list)
                    Console.WriteLine(m.CustomerID);
            }
        }

8. ELinq提供了非常丰富的API,方便程序的追踪和调试,下面是部分截图

          图1:NorthwindContext 类中的Customers字段可是只读的并且从来没有赋值,下面可以看出Customers的字段已经有值了!

           图2 :非常方便的在调试时查看SQL语句

            图3:可以清晰的看到Linq表达式经过翻译后的整个执行计划(SQL语句,SQL参数,DataReader到实体类间的映射过程)

          图4:可以清晰的查看OR映射的元数据信息

技术支持:

  1. 官方网站
  2. Nuge 下载页面
  3. ORM组件 ELinq系列
  4. ORM组件 ELinq 更新日志
  5. ORM组件 ELinq 使用答疑
  6. 在我的博客留言,我会尽可能地抽时间来答复大家的问题。
  7. 加入 ELinq用户的 QQ群(271342583)。

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