Subsonic介绍及使用

官方网站:http://subsonicproject.com/

介绍原文:http://www.keyusoft.cn/(S(3wcpdjv14wpvdr55i3bidx55))/Default.aspx?Page=SubSonic&AspxAutoDetectCookieSupport=1

使用原文:http://www.cnblogs.com/EricGu/archive/2008/07/23/1131467.html

 

SubSonic是一个类似Rails的开源.NET项目。你可以把它看作是一把瑞士军刀,它可以用来构建Website和通过ORM方式来访问数据。Rob Conery和Eric Kemp是推动SubSonic的主要开发人员,与项目良好的发展有着密切的关系。
作为一个开发人员生产力工具,SubSonic通过从基础上支持软件开发的迭代本质,自动化了数据驱动的应用程序开发中重复性的、无趣的过程。通过这个自动生成的Web-Based的数据操纵的“架子”,轻量级和灵活的查询工具,以及一个不断丰富功能的用于通用业务数据验证和转换需要的类库,SubSonic让开发人员可以快速的构建他们的应用程序,而不是一些支撑的基础系统。
SubSonic支撑着几个开源项目,如dotnetkicks.com,并且目前正被集成到一个顶级的ASP.NET的博客平台上。使用SubSonic的既有业余开发的个人应用程序,也有一些500强企业。
SubSonic 是一个应用程序工具集,主要功能是完整生成数据访问层。与其他一些对象关系映射 (ORM) 框架不同,SubSonic 不是在运行时执行基于反射的映射,而是直接生成和编译数据访问层(因此,有些人把它称为代码生成工具而非 ORM)。
与其他 ORM 相比,SubSonic 采用独有的方法将表格映射至域模型。NHibernate(另一个用于 .NET 的 ORM)是先指定模型(或业务实体),然后通过 XML 属性或 .NET 属性将这些实体映射至数据库。SubSonic 是在两者之间进行切换并根据数据库架构创建模型。这两种方法各有优缺点,具体使用哪一种通常由个人偏好决定。
为获得完整的数据库模型,应安装 SubSonic 并通过 web.config 文件中的一些设置在应用程序中对其进行配置。该模型由与表格同名的简单类组成,其中包含适用于所有常用数据库操作的方法。例如,“产品”表将转换成“产品”类,并具有如 Save、Destroy 和 Where 之类的方法,后者用于查询数据库。复杂查询会使用独立查询对象。
与大多数 ORM 工具不同,SubSonic 提供了一种妥善的方式来处理存储过程。存储过程可以封装入单个类中,象调用方法一样调用这些过程。还支持访问视图。
除了 ORM 这个最主要的功能,SubSonic 还包括许多其他帮助程序函数和控件。其中一个更有用的控件是 Scaffold,它使快速启用和运行应用程序变得简单—虽然您可能不会在生产代码中使用这个控件,但它是构建原型的理想选择。还有一些更有用的帮助程序方法主要用于验证,它们的验证方法包罗万象(数字、仅限字母、邮政编码、每种主要信用卡等)。
Subsonic是一个工具组,能够帮助网站构建自己的数据层。其核心包括

  • 一个不需要你写任何代码就能实现的数据层,它在编译的时候自动构建你需要的全部对象和对象的强类型集合。
  • 一组完整的实用工具,实现类似Rails的scaffolding功能,migrations (DB Versioning)(不太清除这个词的准确翻译,可移植的数据层?),和代码生成工具;
  • 一个动态查询工具,通过它你不需要了解Sql就可以使用SqlServer和微软的企业库;
  • 一个关系对象映射工具,该工具可扩展使用视图和存储过程,更加灵活;

Subsonic可以帮你做什么:

  • 缩短你的开发周期。不仅仅是因为在开发初期帮你自动生成了代码,并且在你需要迁移数据库时也不需要重写数据层。
  • 你可以选择完全采用ORM(关系对象映射),也可以使用存储过程和视图。我们没有企图告诉你怎么做,因为你已经知道怎么做最好。我们只是想给你一些帮助。
  • 帮助你的应用自动构建。通过我们的代码生成器(类,脚手架,批处理类batch-class),在很短的时间内你的站点就可以实现自动构建。然后脚手架控件(scaffolding)会帮助你很快实现数据处理。
  • 一个可扩展的坚实的基础。我们的新手站点已经集成了多种特性,包括ASP.NET membership,AHAX,3列弹性XHTML布局主题,和用户管理页面。这些至少需要一个星期的工作,现在已经完成了!
  • 在很短的时间内把你的项目从设想实现为原型。这就是这个工具的强大所在——使用新手站点你可以快速实现敏捷的原型(后面难以翻译附原文 using our starter kit you can have a sharp prototype up and running in the merest fraction of what it used to take.)


SubSonic 本身是一个功能非常强大的应用程序工具集;如与 ASP.NET MVC 配合使用,它将成为非常有用的应用程序框架,效果不逊 .NET 和别的语言中提供的其他快速开发应用程序框架。

 

 

 

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. 引入文件
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();

不仅能够实现各种select语句的交互式参数输入,而且能够实现数据的分页功能:

Query q = BlogStudent.Query();q.WHERE("name=sssss");q.QueryType = QueryType.Select;q.PageSize = 2;q.PageIndex = 3;//其中pageIndex从1开始.

 

 

Database Query Tool :http://www.wekeroad.com/query1.htm

Website Starter Kit : http://www.wekeroad.com/starterintro.htm

Getting Started : http://www.wekeroad.com/ss_setup2.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值