官方网站: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是一个工具组,能够帮助网站构建自己的数据层。其核心包括
Subsonic可以帮你做什么:
SubSonic 本身是一个功能非常强大的应用程序工具集;如与 ASP.NET MVC 配合使用,它将成为非常有用的应用程序框架,效果不逊 .NET 和别的语言中提供的其他快速开发应用程序框架。
建立项目后,在sunsonic安装文件中引入Microsoft.Practices.EnterpriseLibrary.Common.dll, Microsoft.Practices.EnterpriseLibrary.Data.dll,Microsoft.Practices.ObjectBuilder.dll,SubSonic.dll四个dll文件即可,注意引入到相应项目文件中。
<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>
<connectionStrings> <add name="test" connectionString="Data Source=(local); Database=test; Integrated Security=true;"/> <add ...> ...... </connectionStrings>
blogstudent.Insert
(数据库各字段值);
单个数据删除: 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();
单个数据更新:
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();
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开始.
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