`

简单就是生活地全部,让你简单地ORM-DbScript

阅读更多
  前几天发布了我写的一个ORM组件,其实我也不知道能不能把它叫做ORM,因为我只是按照自己的一个很简单的想法-方便快捷,不要有什么噱头,强迫你要为了OO而写一大堆代码和配置文件来实现一个表关联,也不用写一大堆XML配置后还要写一大堆的实体类,虽然有代码生成工具,但是就是会让人觉得很不爽,一大堆的配置让新手上手有了很高的门槛。我喜欢iBaties的以程序员为中心的思想,学了SQL却不用那是很痛苦的事情,就跟男人被阉割,程序员很多都会习惯性的把某些功能直接在大脑中就和SQL语句关联起来,为什么要抹杀程序员的天性呢?还有很多对性能比较吹毛求疵的人为什么就不能满足他们的与生俱来的欲望呢?但是iBaties的配置文件荏苒是我心中的痛,而且也不喜欢在工具间切换来切换去,会打断思维的。后来发现了SubSonic,号称0代码ORM,用过之后发现,不用配置的确是方便了,但是如果开发的时候连接不上数据库,就基本上不要做了,而且和NHibernate一样的把SQL阉割了。
  所以,我开始写DbScript。
  DbScript很简单,没有一大堆的噱头,结构简单,用起来也简单。
  它可以自动帮你生成所有的实体类,所以你不用写实体类了,会自动帮你把每一条Sql查询转化成方法,一切都是强类型的,所以不用担心因为变异时找不到错误。配置文件是可以用任何SQL工具从数据库导出的Create语句和很简单结构的Sql指令列表(比XML简单多了)。我们来看看到底能有多简单。
  首先在数据库里创建好表结构(假设是SqlServer2000),然后在企业管理器中导出创建表的SQL,另存为script.sql保存在App_Code 目录里,然后用 表名:查询名{SQL查询}这样子的结构将可能用到的查询都写进去。
  然后在网站项目引用Dbscript.Dll,按照规定添加Web.config,其它配置直接Copy进去,只需要修改连接字符串和数据库类型。之后把网站编译一次,然后我们就可以开始简简单单的工作了。
  每个表都会被生成实体类,查询的方法也都自动生成了,如果要查询你只需要写入Fetch,VS2005会自动的提醒你有哪些查询方法是可选的。我们看一个例子,查询在成都的用户:
   
1IExecute exec = ExecuteFactory.GetExecuter();
2donkeyuser du = new donkeyuser();
3du.livingcity = "成都";
4int count = 0;
5List<donkeyuser> list = Fetch.getalluser(du, 101out count, exec);
6GridView1.DataSource = list;
7GridView1.DataBind();

如果排除绑定GridView,大家可以看到有多简单了。
如果是插入一个用户呢?
1IExecute exec = ExecuteFactory.GetExecuter();
2donkeyuser du = new donkeyuser();
3exec.Insert<donkeyuser>(du);
4

如果是需要事务来操作呢?
 1IExecute exec = ExecuteFactory.GetExecuter();
 2donkeyuser du = new donkeyuser();
 3try
 4{
 5    exec.OpenTrans();
 6    exec.Insert<donkeyuser>(du);
 7    exec.Commit();
 8}

 9catch
10{
11    exec.RollBack();
12}

13

  注意,用完后记得要exec.Close()关闭连接;
  很多人会问,如果有Many2One,One2Many,Many2Many的关系怎么办呢?
其实也就一句话的事情,也许我在下一个版本会提供一个简化的版本来解决关系问题以适应更懒得人,不过自己权衡了一下,配置半天来搞定本来一句话就搞定的事情实在划不来,于是这个版本我就懒筋发作没有处理了。
  不想强调这个组件怎么怎么符合先进的架构,三层多层什么的,老实说我把它设计得更类似一个ToolKit,而非Framework,Framework是束缚程序员手脚的框框条款,而ToolKit是程序员的好朋友,需要的时候你可以用它,不需要的时候它会静静的呆在代码的角落,所以我希望你能下载Dbscript,让它来帮助你,也希望你能给我更多的建议,回馈,让我能更好的改进它。

项目主页:http://www.codeplex.com/Dbscript 

         
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics