导航

yaosansi's Blog

当你背向太阳的时候,你只会看到自己的阴影!能力是有限的,努力无限的!

« 使用Google Weather API查询天气预报用.net生成Apache的URL编码的解决方案 »

Subsonic介绍及使用

  • 本站大部分内容从网上收集,收集目的仅供研究、学习。涉及版权或不希望收录您的文章请您及时与我联系。
  • 本站IM群,请自行选择。请各位朋友按照自己喜好加入。加入群后请及时发言,防止被清理。谢谢您的合作!!!
  • QQ群:Y①WEB开发(ASP.NET)号码:7351660 QQ群:Y②WEB开发(ASP+.NET)号码:11864905
  • QQ群:Y③WEB开发(DIV+CSS)号码:16610506 QQ群:Y④WEB开发(JS+AJAX)号码:16143998
  • QQ群:Y⑤WEB开发(新手)号码:12777715 MSN群:yaosansi[at]126.com

官方网站: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

原创文章如转载,请注明:转载自http://www.yaosansi.com
订阅本站,阅读更多文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog .Theme from Google黑板报 By Washun

Copyright 2005-2008 yaosansi'site All Rights Reserved.

感谢Denny·G 为本站提供FTP空间
辽ICP备05021434号

Search

  •  

赞助商广告

控制面板

最新评论及回复

最近发表