SubSonic的配置方法

在刚开始使用中就碰到问题:按照官方的方法配置,总是不能编译时自动生成数据访问层代码(其中一种,也可使用命令行自己生成,下面介绍)。本文只要介绍了这两种配置subsonic的方法。

1.配置方法

自动在临时文件夹生成的官方方法如下:
(1)修改web.config
    在web.config里configuration节下面加入一下内容:

 1 < configSections >
 2          < section  name ="SubSonicService"  type ="SubSonic.SubSonicSection, SubSonic"  requirePermission ="false" />
 3      </ configSections >
 4      < appSettings />
 5      < connectionStrings >
 6          < add  name ="football"  connectionString ="Data Source=ERICK;Initial Catalog=polan2;Persist Security Info=True;User ID=sa;Password=sa"  providerName ="System.Data.SqlClient" />
 7      </ connectionStrings >
 8      < SubSonicService  defaultProvider ="football" >
 9          < providers >
10              < clear />
11              < add  name ="football"  type ="SubSonic.SqlDataProvider, SubSonic"  connectionStringName ="football"  generatedNamespace ="football" />
12          </ providers >
13      </ SubSonicService >


    然后在system.web节内加入buildProviders配置节:

1 < compilation  debug ="true"  defaultLanguage ="C#" >
2              <!-- ########################## SubSonic Build Provider ############################### -->
3              <!-- This will NOT WORK in Medium Trust -->
4              <buildProviders>
5                 <add extension=".abp" type="SubSonic.BuildProvider, SubSonic"/>
6             </buildProviders>
7              < assemblies >
8                  < add  assembly ="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
9        </ assemblies >


    web.config的设置结束。

(2)添加对subsonic.dll文件的引用
        右键项目--添加引用--浏览
(3)在app_code文件下加入subsonic.abp文件
        这里subsonic.abp是根据buildProviders配置节里面的extension=".abp"而来, .abp代表application build provider,目的是为了在编译时自动生成数据访问层,这些代码放在了框架的临时文件夹里面。
(4)编译之

        我用的vs2008的webapplication,在上述三步后,发现vs2008依然不能找到我自己创建的命名空间以及相应的类,而且从编译时间上也能断定项目并没有按正常情况自动创建数据访问层的类代码。非常费解,今天又用vs2005 和2008分别对subsonic在website和webapplication下的配置进行了测试,发现上述方法只能在vs2005下的website中正常使用,对于其他三个项目,则只能使用另一种方法,IDE的外部工具:
(1)添加visual studio外部工具
        打开vs2005或者2008,菜单-工具-外部工具,添加外部工具对话框如下:

命令行处找到subsonic的命令行工具(位于安装文件下);参数的最后一个空格后面的是要输出的目录(自己选择);

(2)运行SubsonicTool外部工具
然后菜单-工具下就有一个subsonictool的工具按钮,直接点击,就会弹出:

输入相应的目录,ok就能在generated文件夹下生成一系列数据访问层的类代码。结构如下:

注意:在webapplication项目中,不要将这些代码直接生成在自己创建的app_code中(默认下没有这个文件夹),会出现依然找不到命名空间和相应类的问题,最好自己在项目下直接建一个Generated文件夹作为放置数据访问层类代码的目录。

2.subsonic使用
        这里对它的使用就不做太多介绍,如果以后遇到一些问题,也会记下来分享。只举个简单的例子:
在一个页面中放置一个gridview,id为productGrid,在后置代码pageload里面写入:

1 productGrid.DataSource  =  football.Product.FetchAll();
2         productGrid.DataBind();

两行代码即可完成。Product是根据数据库自动生成的代码,真正项目中要想使用,必须要通过partial class的方法把这些类进行相应的扩展,留在以后再说。

Subsonic 的实践安装方法:

(1) 安装SubSonic2.03(在Vista系统中要使用Administrator帐户;

(2)逐个编译SubSonic tools ,使得VS 2005中安装了Add-in工具;

(3)新建一个visual studio 2005的工程,数据库用Sql Server2000(建议用2005版本),如果是Web应用程序按F5可以产生Web.config,如果是WindowsForm或者Dll应用程序,手动添加App.config(具体修改串解释,以下详细说明)

(4)添加引用,浏览添加SubSonic.dll(SubSonic安装目录下),添加System.configuration引用和System.Web(不晓得为什么添加这个?) 

(5)新建一个DAL文件夹,在DAL上右击,进入SubSonic菜单,选择Generate Multiple Files

Web.config或App.config参数详解(红色字体标识):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
   <section name="SubSonicService"
      type="SubSonic.SubSonicSection, SubSonic"
      allowDefinition="MachineToApplication"
      restartOnExternalChanges="true"
      requirePermission="false"/>
   <section name="dataConfiguration"
type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,
Microsoft.Practices.EnterpriseLibrary.Data" />
</configSections>
<appSettings/>
<connectionStrings>
   <clear/>
   <add name="数据库联接名,示例:NorthwindConnection" connectionString="Data Source=.;Initial Catalog=想要生成实体类的数据库名,,示例:Northwind;Integrated Security=True"/>
     </connectionStrings>
<SubSonicService defaultProvider="提供程序名,会作为类的前缀,示例:Northwind">
   <providers>
    <clear/>
    <add name="提供程序名,会作为类的前缀,示例:Northwind" type="SubSonic.SqlDataProvider, SubSonic" connectionStringName="数据库联接名,示例:NorthwindConnection"
      generatedNamespace="类的命名空间,示例:Northwind"
            />
   </providers>
</SubSonicService>
</configuration>

特别: 解释说明相同的需保持相同名字

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 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: [email protected]   学习讨论: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、付费专栏及课程。

余额充值