日期:2014-05-17  浏览次数:20535 次

自己写的简单的ORM类,分享一下
我们做程序开发的,最烦的就是写实体类,写数据持久化(ORM)的那些语句

比如下面这个实例

//1.我们先写实体类 
//新闻实体类
public class News
{
   public int Id{get;set;}
   public string Title{get;set;}
}
//2.数据操作类
//新闻数据操作类
public class NewsDAL
{
   public void Add()
   {
      //写sql语句
      //写参数,执行sql
   }
}
//3.业务逻辑类
//新闻数据操作类
public class NewsBLL
{
   public void AddNews()
   {
   }
}
//4.然后在UI层绑定一个实体,调用NewsBLL.AddNews()方法


尽管可能有某些工具帮我们生成实体 或者 DAL类,但是该工具不灵活,某些特殊的要求还是无法快速的实现。

本人一直在思考实现这些的快速的方法,比如说用xml配置文件来表示实体与数据库的映射关系,然后后果往往是舍得其反,反而加重了程序员的负担,他还要来学习你这个配置文件是怎样定义的,扩展性也不好,比如说要同时插入两个实体等等,插入的时候用逻辑业务等

我也用了一段时间nhibernate,发现这个框架太大,往往我们写的程序还没这个框架的体积大,而且nhibernate提供的功能过于庞大,不好上手等,参照nhibernate的特性,晚上突发奇想,模仿nhibernate写了一个orm的辅助类,分享一下,希望得到大家的意见和建议

本类的功能分3个方面:
1.定义实体的特性(如对应的表名 主键名 属性对应的列名)
2.实体和数据库对象的相互转换
3.简单实体的 CRUD操作


------解决方案--------------------
我是楼主,话没说完换了个ID,这个烂论坛,自己发表的不能修改,还只能回复3次,迟早要倒闭

类的定义:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CR;

namespace CR.Entity
{
    /// <summary>
    /// 新闻信息
    /// </summary>
    [Tab("t_news","newsid",true)]
    public class News
    {

        /// <summary>
        /// Id
        /// </summary>
        [Bind("newsid")]
        public int Id { get; set; }
        /// <summary>
        /// 标题
        /// </summary>