Smart ORM v0.3发布(完全面向对象的轻量级ORM工具)

 

1. Smart ORM .NET概述

       Smart ORM .NET 是基于.NET 2.0的轻量级ORM工具。一般的ORM工具是通过建立数据表格,然后根据表格创建实体类型,而SmartORM则是通过实体类型的定义来生成数据表格定义,所以您完全可以在不了解数据库结构的情况下实现对象的关系映射功能。

源代码下载地址: http://dyj.ithinking.cn/files/smart_orm.src.0.3.1.zip
    功能特点如下:

l         支持多种数据库,主要有SQL ServerMySQLACCESS等。

l         根据类定义自动生成数据库表格,自动获得类型间的关联关系,省去繁琐的关系配置文件。

l         支持插件编程,可以处理插件中的未知类型。

l         简单易用,完全面向对象,提高了开发效率,特别适合于小型项目和懒人使用。

        
2. 快速开发指南

       该工具基于.NET 2.0,所以不能用在.NET 1.1的工程。

首先给你的工程添加Midapex.SmartOrm.dll引用,然后在需要定义的实体类型文件中添加using Midapex.SmartOrm;

2.1 定义实体类型(Entity Class)

       对实体类型的定义的要求:

l         有一个无参构造函数,可以是私有的或是受保护的类型。反射生成实例的时候需要用到,否则无法生成实体对象。

l         每个实体都要一个主键,这意味着同类型的对象都是唯一的。主键字段可以采用自增字段或自定义主键值。

l         每个实体类型必须包含一个或多个数据列定义。

举个简单的例子:

[TableMapping]

    public class Person

{

        ///<summary>

        ///默认的构造函数,必须的。

        ///</summary>

        protected Person()

        {

        }

        public Person(string name)

        {

            this.name = name;

        }

        ///<summary>

        ///定义了主键(使用自增长字段)

        ///</summary>

        [ColumnMapping(PrimaryKey = true,Autoincrement=true)]

        public int Id;

       

        string name;

        ///<summary>

        ///定义一个名字数据列,字符类型,大小

        ///</summary>

        [ColumnMapping(AllowNullValue=false,Size=50)]

        public string Name

        {

            get { return name; }

            set { name = value; }

        }

        int age;

        ///<summary>

        ///定义了一个整形的数据列

        ///</summary>

        [ColumnMapping]

        public int Age

        {

            get { return age; }

            set { age = value; }

        }

}

为类添加[TableMapping]特性,表明这是个实体类型,相当于在数据库中定义一个表,表名称可以通过参数指定TableName指定,默认使用实体类型名称。

为属性或者字段添加[ColumnMapping],表明这是个数据列,列名称也可以自己指定,默认使用列名称。如果是字符串字段还可以指定字符串列,需要指定列的大小,默认的大小是36.

2.2 配置

       在操作对象以前,你需要指定连接的数据源。有三种方法:

1.         添加应用程序配置文件,然后加入ORM的配置节。例子如下:

<?xmlversion="1.0"encoding="utf-8"?>

<configuration>

    <configSections>

        <sectionname="smartOrmConfigSection"type="Midapex.SmartOrm.OrmConfig, Midapex.SmartOrm, Version=0.3.1118.0, Culture=neutral, PublicKeyToken=null" />

    </configSections>

    <smartOrmConfigSectiondatabaseType="Access"dbConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ormexamples.mdb" />

</configuration>

2.         在程序中指定,可以达到通用的功能。

OrmSessionsFactory.SetConfig(DataSourceType.Access, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ormexamples.mdb");

3.         上面的两种方法都不能创建表格,这就需要你编写创建表格的代码,比如:

OrmSessionsFactory.CreateSession().CreateTable<Person>();

所以我写了一个配置向导工具帮助你写配置文件和创建表格,强烈建议使用该工具来配置程序。首先你要生成应用程序,然后把配置工具SmartOrmWizard.exe复制到应用程序的目录下,然后运行该程序,按照提示进行操作,然后就能创建数据库中的表格。界面如下:

    

2.3 保存对象

              OrmSession session = OrmSessionsFactory.CreateSession();

         Person person = new Person();

          person.Name = "Smith";

          session.Save(person);

    该例子展示了怎么保存一个对象,先创建一个OrmSession对象,然后通过它把对象保存到数据库中。

2.4 查询和删除对象

       例子代码如下:

       OrmSession session = OrmSessionsFactory.CreateSession();

    TimeCounter counter = new TimeCounter();

     Query query = new Query(string.Format("id={0}",session.QuoteParam("Id")));

     query.AddParam("id",1);

     Person[] persons = session.Select<Person>(query);

     session.Delete<Book>(query);

          

更多内容请参看例子工程。

posted @ 2007-11-21 22:03  南桥一梦  阅读(4577)  评论(43编辑  收藏  举报