这是我设计的一个轻量级的 .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 上。