自己写的简单的ORM类,分享一下解决方法
自己写的简单的ORM类,分享一下我们做程序开发的,最烦的就是写实体类,写数据持久化(ORM)的那些语句比如下面
自己写的简单的ORM类,分享一下 我们做程序开发的,最烦的就是写实体类,写数据持久化(ORM)的那些语句 比如下面这个实例
C# code//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次,迟早要倒闭
类的定义:
C# codeusing 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; } }}[解决办法] 辛苦了,谢谢分享[解决办法] 支持分享[解决办法] 辛苦了,谢谢分享[解决办法] 分享是美德[解决办法] 支持分享[解决办法] 恭喜,接分来了。[解决办法] 我也自己写了一个orm,功能比你强一些。另外自己写的orm一个很大问题就是,你能像Linq to sql那样返回List<T>吗?在mvc开发中返回DataTable好像有些见笑了[解决办法] 谢谢分享.[解决办法] 走过 路过 看过 学过[解决办法] 楼主对 .net 了解不够。 sql 语句,可以用SqlCommandBuilder 自动生成。 何必自己费尽巴力的拼接sql、SqlParameter,你的大部分代码都可以删除。[解决办法] 支持分享...[解决办法] 支持分享...[解决办法] 过来接分 嘿嘿[解决办法] 探讨 支持分享...[解决办法] 来看看[解决办法] 不写实体类,这些代码的优势在哪呢?性能会提高ma?[解决办法] 收藏一下,支持分析精神![解决办法] 不错的哈[解决办法] 还没看,先顶下...[解决办法] 路过,帮顶下[解决办法] [解决办法] 支持分享[解决办法] 辛苦了,不容易啊[解决办法] 看不懂的说[解决办法] 辛苦,楼主走的是大部分ORM的老路,没有新意,不过代码写得还不错![解决办法] 简单的增删改查都可以用LINQ吧[解决办法] 能人呀,国产软件就靠楼主这样的大虾了。[解决办法] 多谢分享![解决办法]
探讨 能人呀,国产软件就靠楼主这样的大虾了。[解决办法] 分享好啊,看看[解决办法] 帐号被封了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……[解决办法] 在写一个东西的时候,最好了解一下有没有类似的实现。。。我发现大家都喜欢自造车轮。。。[解决办法] 探讨 在写一个东西的时候,最好了解一下有没有类似的实现。。。我发现大家都喜欢自造车轮。。。[解决办法] 好东西要收藏~[解决办法] 探讨 楼主对 .net 了解不够。 sql 语句,可以用SqlCommandBuilder 自动生成。 何必自己费尽巴力的拼接sql、SqlParameter,你的大部分代码都可以删除。[解决办法] 了解一下[解决办法] 顶一下~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[解决办法] 探讨 我看了下SqlCommandBuilder,估计在这个例子中不太适合,他生成的参数语句,太多了,5个列的表 参数有17个,而且我感觉性能不如通过反……[解决办法] 以前我也是用自己写的反射造sql,用了一段时间不是太爽。最后还是换成现有的ORM了。对于我这还用net2.0的来说linq ,ef,有点远了。 最后选了AR,用着还行。------解决方案--------------------
来看看[解决办法] 已经不错了......[解决办法] 我要分[解决办法] [解决办法] 果断接分[解决办法] 收藏一下,支持分析精神![解决办法] [解决办法] lz威武[解决办法] 回帖有分拿不?[解决办法] hibernate自动生成po类,自动生成增删改查模版,何必舍近求远[解决办法] 感谢分享[解决办法] 不错顶一下[解决办法] grails的功能?[解决办法] 学习了是[解决办法] ddddd[解决办法] 回帖肯定有分[解决办法] 学习了[解决办法] 学习了[解决办法] 学习了[解决办法] 学习~![解决办法] 叼暴了![解决办法] 顶,学习了~~[解决办法] 学习了。[解决办法] 探讨 我是楼主,话没说完换了个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,用着还行。[解决办法] 学习了~~~![解决办法] 三层架构[解决办法] 探讨 分享好啊,看看[解决办法] 现在三层的代码 自己一般都很少写了 有工具可以生成 感谢分享 帮顶[解决办法] 支持一下下[解决办法] 支持一下!------解决方案--------------------
有好多三层工具能够生成的[解决办法] mark[解决办法] 学习了,顶呱呱。。。[解决办法] lz强大,lz威武!![解决办法] .....................探讨 我是楼主,话没说完换了个ID,这个烂论坛,自己发表的不能修改,还只能回复3次,迟早要倒闭 类的定义: C# code using System; using System.Collections.Generic; using System.Linq; using System.Text; using CR; namespace CR.Entity { ……[解决办法] 感谢分享 帮顶[解决办法] 马克一下