這是我設計的一個輕量級的 .Net ORM (Object Relational Mapping) 數據訪問及 WEB 框架。對於 ORM 和 Sql 調用,它都擁有清晰和易用的接口,目前支持 SqlServer、SQLite、MySql、Access、Firebird、Oracle 等數據庫。對於 WEB 開發,它既支持 ASP.NET 2.0 的 DataSource 方式,也支持 Ruby On Rails 風格的 MVC 方式。
目前,數據庫部分已經支持多主鍵、多表聯合查詢、快速分頁集合、隱式數據庫事務、連貫API查詢、ActiveRecord風格查詢、動態對象、部分保存、自動創建數據表、一對一、一對多、多對多關係等功能,具體實現請參閱 Samples 中的例子程序和單元測試的內容。
而 DataSource 部分,因爲綁定數據訪問組件,所以可以只需要修改配置文件,不需要修改任何代碼的在不同的數據庫之間切換。另外,還支持按命名約定的方式綁定“新建”和“編輯”頁面的控件,以最少的代碼完成輸入、驗證、保存等一系列操作。
Rails 風格的 MVC 框架目前已經完成 MVC 部分,腳手架,基類中的 LinkTo、UrlTo 等快捷函數,Http Get 支持等。目前腳手架部分沒有數據驗證模塊,不過,自己寫的 MVC 代碼可以自行實現驗證。
例子程序訪問的數據庫主要是 Access,而單元測試使用的數據庫是 SQLite,通過修改配置文件中數據源部分,可以使之不需要重新編譯即可工作於其它數據庫上。配置部分通過 App.config 進行,請參閱 Samples 中的例子程序中的 App.config 和 UnitTest 項目內嵌的配置文件 UnitTest.config.xml 。
我在 MS Sql Server 2000、MS Sql Server 2005 Express、 MS Access 2003、MySql 5.0、SQLite 3、Firebird 2.0.3 和 Oracle 10g Express 上測試過本組件。
v0.33 版比較大的改變爲:
·支持移除一對多、多對多關係
·支持 Firebird、Oracle
·增加緩存系統
·支持 SoftDelete、CreatedOn、UpdatedOn
·支持 ASP.NET 2.0 Membership 系統
·DataSource 支持“新建”和“編輯”頁面
·Rails 風格 MVC 框架
數據訪問部分簡單的使用方法如下:
- public abstract class User : DbObjectModel < User >
- {
- public abstract string Name { get; set; }
- public abstract int Age { get; set; }
- public abstract bool Gender { get; set; }
- public abstract DateTime Birthday { get; set; }
- public User Init(string Name, int Age, bool Gender, DateTime Birthday)
- {
- this.Name = Name;
- this.Age = Age;
- this.Gender = Gender;
- this.Birthday = Birthday;
- return this;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- // Create
- User u = User.New().Init("tom", 18, true, DateTime.Now);
- u.Save();
- // Read
- User u1 = User.FindById(u.Id);
- // Update
- u1.Name = "jerry";
- u1.Save();
- // Delete
- u1.Delete();
- // Complex Query
- List< User ><user></user> ls = User.Find(CK.K["Age"] > 15 && CK.K["Gender"] == true);
- // Use Sql
- List< User ><user></user> ls1 = User.FindBySql(
- "Select * From [User] Where [Age] > 15 And [Gender] = true");
- }
- }
請訪問 http://www.codeplex.com/dbentry 下載本組件。使用文檔也在 codeplex dbentry 主頁的 Wiki 上。