首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

自各儿写的简单的ORM类,分享一下

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

自己写的简单的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>


        public string Title { get; set; }
        /// <summary>
        /// 内容
        /// </summary>
        public string Content { get; set; }
   }
}




这个类的下载地址: http://download.csdn.net/detail/ailin84/3661364

分享给大家,有兴趣的欢迎提出意见
[解决办法]
辛苦了,谢谢分享
[解决办法]
支持分享
[解决办法]
辛苦了,谢谢分享
[解决办法]
分享是美德
[解决办法]
支持分享
[解决办法]
恭喜,接分来了。
[解决办法]
我也自己写了一个orm,功能比你强一些。另外自己写的orm一个很大问题就是,你能像Linq to sql那样返回List<T>吗?在mvc开发中返回DataTable好像有些见笑了
[解决办法]
谢谢分享.
[解决办法]
走过  路过  看过  学过 
[解决办法]
楼主对 .net 了解不够。

sql 语句,可以用SqlCommandBuilder 自动生成。

何必自己费尽巴力的拼接sql、SqlParameter,你的大部分代码都可以删除。
[解决办法]
支持分享...
[解决办法]
支持分享...
[解决办法]
过来接分 嘿嘿
[解决办法]
引用:
支持分享...


 +1
[解决办法]
来看看
[解决办法]
不写实体类,这些代码的优势在哪呢?性能会提高ma?
[解决办法]
收藏一下,支持分析精神!
[解决办法]
不错的哈 
------解决方案--------------------


还没看,先顶下...
[解决办法]
路过,帮顶下
[解决办法]
自各儿写的简单的ORM类,分享一下
[解决办法]
支持分享
[解决办法]
辛苦了,不容易啊
[解决办法]
看不懂的说
[解决办法]
辛苦,楼主走的是大部分ORM的老路,没有新意,不过代码写得还不错!
[解决办法]
简单的增删改查都可以用LINQ吧
[解决办法]
能人呀,国产软件就靠楼主这样的大虾了。

[解决办法]
多谢分享!
[解决办法]

引用:
能人呀,国产软件就靠楼主这样的大虾了。


晕。不是说不好。也没你说的那么严重?

.net里写这个就是很简半日的啦 
[解决办法]
分享好啊,看看
[解决办法]
帐号被封了N天后 浏览的第一个帖子就遇到高人了 收藏了
[解决办法]
支持分享!!!
[解决办法]
不错的想法,把VM与数据库打交道的繁琐工作给简化了,学习学习,同时也提点小建议:
1)SQL语句的生成问题,上面已经有人提到了,会有SQL注入的危险哦O(∩_∩)O~
2)楼主考虑过多表复合的CRUD吗?
3)这个要是放在后台,通过服务与前台交互的话【public static T Get<T>(object key) where T : new()】,能支持吗?
4)存储过程、索引、自增列。。。。。。

鄙陋意见,仅供参考!
[解决办法]
这个方法一直在用
引用:
引用:
我也自己写了一个orm,功能比你强一些。另外自己写的orm一个很大问题就是,你能像Linq to sql那样返回List<T>吗?在mvc开发中返回DataTable好像有些见笑了


恩,其实我写这个最重要的目的就是自动把数据库对象转换为实体列表 List<T> 

我写了这个方法: 
public static List<T> Bin……

[解决办法]
在写一个东西的时候,最好了解一下有没有类似的实现。。。我发现大家都喜欢自造车轮。。。
[解决办法]
引用:
在写一个东西的时候,最好了解一下有没有类似的实现。。。我发现大家都喜欢自造车轮。。。

学习可以,做项目的时候,不合适。。。。
------解决方案--------------------


好东西要收藏~
[解决办法]

我要分
[解决办法]

[解决办法]
lz威武
[解决办法]
回帖有分拿不?
[解决办法]
hibernate自动生成po类,自动生成增删改查模版,何必舍近求远
[解决办法]
感谢分享
[解决办法]
不错顶一下
[解决办法]
grails的功能?
[解决办法]
学习了是
------解决方案--------------------


该回复于2012-05-05 12:34:03被版主删除
[解决办法]
回帖肯定有分
[解决办法]
学习了
[解决办法]
学习了
[解决办法]
学习了
[解决办法]
学习~!
[解决办法]
叼暴了! 
[解决办法]
顶,学习了~~
[解决办法]
学习了。
[解决办法]

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

类的定义:
C# code

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

namespace CR.Entity
{
    /// <summar……

笑死了,太幽默了
[解决办法]
引用:
以前我也是用自己写的反射造sql,用了一段时间不是太爽。最后还是换成现有的ORM了。对于我这还用net2.0的来说linq ,ef,有点远了。 最后选了AR,用着还行。

.net 2.0下,可以试试PDF.NET开发框架,为.net 2.0量身定做的。
[解决办法]
学习了~~~!
[解决办法]
三层架构
[解决办法]
引用:
分享好啊,看看
+
[解决办法]
现在三层的代码 自己一般都很少写了  有工具可以生成

感谢分享  帮顶
[解决办法]
支持一下下
[解决办法]
支持一下!
[解决办法]
有好多三层工具能够生成的
[解决办法]
mark
[解决办法]
学习了,顶呱呱。。。
------解决方案--------------------


lz强大,lz威武!!
[解决办法]
.....................

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

类的定义:

C# code


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

namespace CR.Entity
{
   ……

[解决办法]
感谢分享 帮顶
[解决办法]
马克一下

热点排行