國內開源ORM組件 ELinq正式版發布


  前言:

    自從發布年度開源力作-國產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)。

   謝謝大家的閱讀,麻煩大伙點一下推薦,再次謝謝大家。 ^_^


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM