Subsonic学习
1. Subsonic学习
简述 SubSonic,一个数据层构建器,在用于多个数据库尤其方便
1.1. 第一章 SubStage的使用
- 目前使用的substage是subsonic 2.1 beta2.2版本,它与subsonic 2.1 beta2.1最大的差别是能够实现把生成的实体文件放到指定项目中,少了beta2.1中复制粘贴功能。substage的功能是自动生成数据库文件,当数据库结构改变后,只要重新生成实体文件就可以了,而不需要向Ibatis那样修改文档!但是自动生成的数据库操作方法是有限的,大部分方法需要我们构建!(假设我们在此阶段连接的是一个数据库中的一个表blog_students,生成的providers名为test,生成的命名空间是test,生成的数据库实体名为:blogstudent,系统自动去掉了下划线_和复数s)
1.2. 第二章 使用subsonic
1.2.1. 引入文件
-
建立项目后,在sunsonic安装文件中引入Microsoft.Practices.EnterpriseLibrary.Common.dll, Microsoft.Practices.EnterpriseLibrary.Data.dll,Microsoft.Practices.ObjectBuilder.dll,SubSonic.dll四个dll文件即可,注意引入到相应项目文件中。
1.2.2. 配置web.config文件
<configSections> <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" /> </configSections> <connectionStrings configSource="connectionStrings.config"/> <SubSonicService defaultProvider="test"> <providers> <clear/> <add name="test" type="SubSonic.SqlDataProvider, SubSonic" connectionStringName="test" generatedNamespace="test" /> </providers> </SubSonicService> <compilation debug="true"> <buildProviders> <add extension=".abp" type="SubSonic.BuildProvider, SubSonic" /> </buildProviders> <assemblies> <add assembly="*"/> </assemblies> </compilation>
- 其中,configSource="connectionStrings.config",connectionStrings.config是项目中的config文件,也可直接写链接字符串。 connectionStrings.config中可以写入连接多个数据库配置:
<connectionStrings> <add name="test" connectionString="Data Source=(local); Database=test; Integrated Security=true;"/> <add ...> ...... </connectionStrings>
1.2.3. 使用
- 在项目文件中引入实体的命名空间using test;这样,便可以进行各种操作了。
- 基本操作如下:
- insert
-
blogstudent.Insert
-
(数据库各字段值);
- delete
单个数据删除: blogstudent.Delete("id",2);
批量数据删除:
Query q = blogstudent.Query(); q.WHERE("name=xuxiuyun"); q.QueryType = QueryType.Delete; q.Execute(); //也可: Query q = new Query("blog_students"); q.BuildDeleteCommand(); q.WHERE("id", 9).WHERE("name","xuxiuyun"); q.Execute();
- update
单个数据更新:
blogstudent=new blogstudent("id"); blogstudent.name="xxy"; blogstudent.save()
批量数据更新:
Query q = BlogStudent.Query(); q.WHERE("name=ssssss").AddUpdateSetting("name", "xuxiuyun"); q.QueryType = QueryType.Update; q.Execute();
- query
-
subsonic的方法中query的功能最全面(http://subsonicproject.com/querying/using-the-original-query-tool/),
-
不仅能够实现各种select语句的交互式参数输入,而且能够实现数据的分页功能:
Query q = BlogStudent.Query(); q.WHERE("name=sssss"); q.QueryType = QueryType.Select; q.PageSize = 2; q.PageIndex = 3;//其中pageIndex从1开始.