ELinq - 開源Linq ORM數據訪問組件

jopen 12年前發布 | 17K 次閱讀 持久層框架 LINQ

         ELinq 是一個輕量簡單易用的開源Linq ORM數據訪問組件,支持Nullable類型和枚舉類型,對Linq的謂詞提供了完美的支持,旨在讓絕大部份的主流數據庫都使用 Linq 來進行程序開發,讓開發人員訪問數據庫從SQL中解放出來,易學易用上手快,配置簡單,并且提供了源代碼下載,方便定制。支持多數據庫,目前支持 Access、SQLServer、SqlCE、SQLite、MySQL、ORACLE,未來還會支持更多的數據庫。

 

         特點: 簡單、高效、易用、靈活、快捷

        1.  配置簡單,支持多數據庫
        2.  支持Linq
        3.  支持集合對象的批量添加、刪除、修改
        4.  靈活的批量刪除(通過Linq表達式)功能
        5.  靈活的批量更新(通過Linq表達式)功能
        6.  支持一對一映射(不需要配置映射關系自動映射)
        7.  支持一對多(不需要配置映射關系自動映射)
        8.  支持多對一(不需要配置映射關系自動映射)
        9.  遵從數據庫的設計理念,不支持多對多,可以把多對多轉化成兩個一對多
       10. 不支持級聯更新、級聯刪除,開發人員完全手工維護外鍵引用完整性
       11. 不支持LazyLoad機制,默認就不會加載,除非指定Include方可
       12. 不支持Session緩存機制
       13. 不支持二級緩存
       14. OR映射不支持任何配置文件
       15. OR映射不需可以要任何Attribute配置
       16. 字符串配置簡單,遵從.net 的配置規范,沒有另起灶爐,比如EF,或者NH
       17. 只要有有數據庫關系理念、懂得Linq表達式就能馬上上手

         設計理念 

        一: 約定勝于配置    

  •           連接字符串的配置完全遵循.Net 的連接字符串配置規范。
  •          表名映射原則: 默認情況下表名和實體類名完全一致,如果不一致那么可以通過TableAttribute標簽來制定,下個版本或許將會增加其它的擴展方式
  •          列名映射原則:默認情況下實體的屬性或字段和表中列名完全一致(不區分大小寫),如果不一致那么可以通過ColumnAttribute標簽來制定,下個版本或許將會增加其它的擴展方式
  •          單一主鍵映射原則:默認情況下實體的ID屬性或”實體名稱"+ID的屬性自動映射為表的主鍵,當字段或屬性的類型是Int型或Long類型時,那么該字段在數據庫中應是自動增一或基于序列的方式
  •         多主鍵映射原則:如果表中有聯合主鍵那么需要在是實體類中把對應的字段或屬性添加IdAttribute標簽即可
  •        一對多映射原則:假設有兩個實體Customer 和 Order兩個實體,Customer 里面包含一個Order的列表屬性,那么只需要在Order類里面包含一個CustomerID 的屬性或字段即可自動完成一對多映射,當然也可以通過AssociationAttribute標簽來指定映射的ThisKey 和ThatKey來手動建立關聯(建議自動建立)。
  •       多對一映射原則:假設有兩個實體Customer 和 Order兩個實體,Order里面包含一個Customer的屬性引用,那么只需要在Order類里面包含一個CustomerID 的屬性或字段即可自動完成一對多映射,當然也可以通過AssociationAttribute標簽來指定映射的ThisKey 和ThatKey來手動建立關聯(建議自動建立),其實一對多和多對一的映射完全一致都需要在多方的那里添加一個屬性(一方的類名名稱+“ID”)。
  •      多對多映射原則:不支持,需要轉換成兩個一對多映射,和數據庫完全保持一致.

      二:基于關系的OR映射的原則

       表和實體是一一對應的,不支持多對多,完全遵循數據庫的設計規范,降低開發人員的學習成本(因為數據庫不支持多對多,如果OR映射支持多對多那么開發人員將要學習多對多的映射規則,比如NHibernate,ManyToMany、Set、Bag、Reverse等配置規范以及在多對對數據保存的時候也需要很多學習成本)

       三:無狀態原則

    DbContext中沒有保存實體的狀態,沒有任何數據緩存,所有的數據都是和數據庫實時的,只要調用DbSet的Insert、Update、Save方法將立即和數據庫進行對應的操作。

項目主頁:http://www.baiduhome.net/lib/view/home/1355040443867

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!