Subsonic使用教程

使用SubSonic生成数据访问层步骤

SubSonic是一个ORM框架,或者说是一个代码生成器,它的工作流程和一般的ORM工具不同,所有的工作全是自动完成,生成完整的数据访问层类库,然后在工程中引用即可使用。整个过程很简单,下面就生成数据访问层类库的过程记录如下:
    1
、建立一个c#类库工程
    2
、删除默认生成的class1.cs文件
    3
、工程添加三个引用,SubSonic.dll(前提是先安装了subsonic才会有这个)、 

System.WebSystem.Configuration命名空间
    4
、在工程下建立一个文件夹,Generated

5、在工程中添加一个新文本文件,命名为:app.config,内容如下:

 

<?xml version="1.0"?>

<configuration>

 

  <!-- 第一部分是照着写就可以了,没有什么好说的 -->

  <configSections>

    <section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>

  </configSections>

 

  <!-- 第二部分是定义一个或者多个连接数据库的字符串,其中要注意的是这部分的name的值是第三部分connectionStringName属性的值-->

  <connectionStrings>

    <!-- 连接数据库的字符串 -->

    <add name="Nowthwin"

         connectionString="Data Source=.;Initial Catalog=BuySaleStorage;Persist Security Info=True;User ID=sa;"/>

  </connectionStrings>

 

  <!-- 第三部分是将连接字符串和数据库驱动匹配起来成为一个连接。name是连接的名字,generatedNamespace的值是生成对象的命名空间-->

  <SubSonicService defaultProvider="Nowthwin">

    <providers>

      <clear/>

      <add name="Nowthwin"

           type="SubSonic.SqlDataProvider, SubSonic"

           connectionStringName="Nowthwin"

           generatedNamespace="Nowthwin"/>

    </providers>

  </SubSonicService>

 

</configuration>
    4
、在vs中工具菜单中选择 工具” -> “外部工具命令,定义一个外部工具菜单项,

           标题为SubSonic DAL(也可以自己命名),

命令为SubSonic文件夹的中命令行工具sonic.exe的路径,

参数为:generate /out Generated生成后的路径为当前路径下的Generated文件夹。),

初始目录为:$(ProjectDir)

并勾选使用命令窗口提示输入参数两个选项,点确定
   

 5、此时vs的工具菜单多了一项“SubSonic DAL命令,单击,然后确定。
    6
、执行完毕,在Generated文件夹中会生成你设定的数据库的类库文件,包括表、视图、存储过程的c#包装。如果出现错误,一般是因为数据库连接串有问题,请仔细检查。
    7
、把Generated文件夹下的所有文件包含到工程中,然后编译,生成类库。至此,全部工作完成,可以在项目中使用ORM操作您的数据库了,完全强类型化的数据库操作方法。
    8
、在项目中使用这个类库的时候,需要在web.config中把上面的app.config中的设置,复制到对应的小节中。
    9
、数据库修改后,只要重新生成一次类库即可,这可能就是所谓的零数据访问层代码实现吧,总之是非常方便。
  

 

Northwind数据库为例

 

/联合查询

DataTable dt = new Select(Product.Columns.ProductName, Category.Columns.CategoryName,Supplier.Columns.CompanyName).From(Product.Schema).InnerJoin(Category.Schema).InnerJoin(Supplier.Schema).ExecuteDataSet().Tables[0];

 

______________________________________________________________________________

//子查询

DataSet dt = new Select().From(Product.Schema)

    .Where("productid").In(1, 2, 3, 4, 5)ExeCuteDataSet();

 

DataSet dt = new Select().From(Product.Schema).Where(Product.Columns.CategoryID)

            .In(

            new Select("categoryID").From(Category.Schema).Where(Category.Columns.CategoryName).IsEqualTo("Produce"))

            .ExecuteDataSet() ;

______________________________________________________________________________________________

//聚合函数使用

 

double result = new

    Select(Aggregate.Sum("UnitPrice*Quantity", "ProductSales"))

    .From(OrderDetail.Schema)

    .ExecuteScalar<double>();

____________________________

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SubSonic3.0使用Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率   应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助。大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会抽时间进行处理的,如果支持我写的文章,也请登陆我的博客推荐一下,有你的支持,我会更有动力。   本Demo使用了T4模版,可以通过模版的应用达到快速开发目的,在我实际的项目当中,可减少70%以上的代码量(计算方面的代码都放在了逻辑层,而逻辑层代码绝大部分都是直接生成)以及80%以上的出错率(程序员平常最多的出错是在机械式的复制与粘贴操作后产生的视觉疲劳,由于没有将复制后的所有相关名称进行修改引起的错误)   ================================================================   名 称:SubSonic3.0 使用Demo   版 本:1.0   最后更新:2013-9-13   作 者:Empty(AllEmpty)   Email: 1654937@qq.com   学习讨论:SubSonic3.0学习群(327360708)   相关博客:http://www.cnblogs.com/EmptyFS/   ================================================================   开发环境:   Vs2010 + SubSonic3.0.0.4.2 + ExtAspNet3.1.9.2 本Demo只是简单的实现了登陆、管理员表的查询以及管理员记录的添加、删除、修改、改变状态功能 底层使用SubSonic3.0.0.4.2插件 + T4模版生成 逻辑层使用T4模版生成将开发过程中所需要的各种调用函数,在实际项目中,使用本方式开发的框架,代码开发量减少了70%以上,出错率也将减到最低。程序员只需要简单的复制+粘贴,然后修改一些UI就可以完成网站后台管理系统或企业类管理软件的功能开发,只需要在小部分需要使用一些逻辑处理的页面中实现一些逻辑处理就可以了,大大减轻了项目开发的工作量,提高开发效率。 本Demo只是实现了简单的功能,并没有详细将管理系统的各种功能实现出来,只是通过本Demo提供了一种快速开发的思想,大家可以深入研究后自由发挥各自的想象与需要,去实现出来。 Demo中各级目录与文件的说明,请查看附件中的数据字典,里面有详细的说明。 项目中的Text.aspx.cs文件是SubSonic3.0的各种使用例子,如果大家对SubSonic3.0不熟悉的话,可以将它设为启动项,启动DeBug调试方法,逐行调试查看,就知道怎么使用了,里面包含了插件各种常用的调用方式。 另外还要重点说明一下的是DataAccess/SubSonic/EntityTable.tt生成的EntityTable.cs文件,这个文件直接生成数据表名与及相关字段名,可直接使用DataAccess.DataModel.T + Table(如ManagerTable.TableName可获取表名...)获取数据表名称与各个字段名称,使用这种方式可以减少代码中的硬编码,这样在修改数据库字段或内容时,VS就会直接报错,让我们可以马上知道要修改那几个地方,减少出错的可能。 Login项目中的SubSonic/CreateBll.tt模版主要用于生成各种逻辑类,在 和 #endregion 模版生成函数 之间放的是根据字段名标识不同,对应生成不同的方法。   大家在实现使用中,可以通过定义不同的字段名给程序甄别而生成你所需要的函数,这样就会大大减轻开发中的工作量,另外使用生成功能,可以避免开发过程中,由于机械式的复制与粘贴产生的视觉疲劳,没有修改相关名称引起的错误。由于生成的逻辑类使用了partial这个类修饰符,所以我们还可以定义同名的逻辑类,里面放那些不能用模版来生成的方法,这样生成与自定义的方法分开两个文件处理,就不用有修改后要花大量时间进行复制粘贴修改相关类了。   最后需要指出的是SubSonic3.0插件目前不支持括号嵌套功能,有双层括号时会给解释成多个单括号,甚至出错,所以大家添加查询条件时要注意这一点,等以后有时间再研究一下代码,看能否加上括号嵌套功能。还有使用In查询时,插件也不能很好的进行解释,所以我封装了ConditionHelper.cs条件类,将In查询转换为多个Or关系的等于查询语句,在使用时也有一些讲究的,具体请查看Test.aspx.cs中的例子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值