写了个DAL出来,有兴趣的朋友们来看看


    为了新书写了这个东西,费了4个晚上的时间来弄,代码很乱,所以暂不放出代码,在release beta版本的时候放出源代码
    主要是喜欢SubSonic的方便,又想能够和ibaties一样能够自己控制Sql,所以主要是综合,还有就是SubSonic需要数据库连接,这里只需要Create的脚本就行了,同样加入了Cache机制。
    放出来是希望有兴趣的朋友帮我测试测试,如果喜欢的朋友比较多我下周会架设一个SVN来共享代码,也希望有时间的高手能提供自己的代码。
    下载:http://www.cnblogs.com/Files/Alexander-Lee/WebSite4TestDbScript.rar 

     以下是配置和使用的说明:

    DbScript说明

配置方法之:天龙八步

第一步,在网站里引用DbScript.Dll
第二步,将
 <configSections>
  <section name="DbScriptService" type="Alexander.DbScript.SectionManager,DbScript" restartOnExternalChanges="true" allowDefinition="MachineToApplication"/>
 </configSections>
 原封不动的放入Web.Config里,要紧贴<configuration>
 在</configSections>后面加入
 <DbScriptService ConnectionString="连接字符串" ProviderType="数据库类型"></DbScriptService>

 ProviderType可能的选项有SqlServer2005,SqlServer,Oracle,MySql,Access
 
第三步,打开连接字符串所连接的数据库,导出创建数据库的脚本,如下

USE [donkeybang]
GO
/****** Object:  Table [dbo].[DonkeyPost]    Script Date: 03/23/2007 22:09:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[DonkeyPost](
 [PostID] [varchar](50) NOT NULL,
 [PostTitle] [varchar](200) NOT NULL,
 [PostUser] [bigint] NOT NULL,
 [Tags] [varchar](200) NOT NULL,
 [PostText] [ntext] NOT NULL,
 [PostDate] [datetime] NOT NULL,
 [PostType] [int] NOT NULL,
 CONSTRAINT [PK_Donkey] PRIMARY KEY CLUSTERED
(
 [PostID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object:  Table [dbo].[DonkeyUser]    Script Date: 03/23/2007 22:09:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[DonkeyUser](
 [DonkeyID] [int] IDENTITY(1000,1) NOT NULL,
 [DonkeyLogin] [varchar](100) NOT NULL,
 [DonkeyNick] [nchar](20) NULL,
 [DonkeyPassword] [varchar](20) NOT NULL,
 [LivingCity] [varchar](20) NULL,
 CONSTRAINT [PK_DonkeyUser] PRIMARY KEY CLUSTERED
(
 [DonkeyID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

注意,可以将多表的Create脚本放在一个文件(建议这么做),每个表必需要有一个主键(次点要特别注意)。

第四步,将这个脚本存为script.sql放入App_Code文件夹

第五步 在Script.sql最后面写入#Command Start 之下就是查询的脚本

第六部 在Script.sql下按照
  
 表名:查询名称{Select语句}
 
 这样子的格式写入可配置查询脚本,注意,参数用#参数名表示,且参数名要等于表名,比如
 
 select * from tb where id=#id;
第七步 在Web.Config里的<compilation debug="true"/>这个地方改为如下

   <compilation debug="true">
    <buildProviders>
     <add type="Alexander.DbScript.Builder,DbScript" extension=".sql"/>   
    </buildProviders>
   </compilation>

第八步 编译网站,之后就可以很开心的操作数据库了

使用方法

IExecute exec = ExecuteFactory.GetExecuter();得到实例,GetExecuter方法有重载,如果不想用配置里的连接,可以在这里直接配置

如果要插入一条记录,假如有表A,则

A a=new A();
a.XX=XX
......
exec.Insert<A>(a);

如果要修改数据

A a=new A();
a.XX=XX
......
exec.Update<A>(a);

删除
A a=new A();
a.XX=XX
......
exec.Delete<A>(a);

查询一个(根据主键)

A a=new A();
a.XX=XX
......
exec.GetOne<A>(a);

查询一个列表

List<A> list=Fetch.XXXX(......);
你会发现。XXXX和我们在Script.Sql里配置查询名称是一样的,参数也是A类型,就和我们手写的一样

其余特性自己发掘

还有你会发现查询的时候第二次会比第一次快得多

你可能感兴趣的:(oracle,sql,SVN,脚本,Go)