为了新书写了这个东西,费了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类型,就和我们手写的一样
其余特性自己发掘
还有你会发现查询的时候第二次会比第一次快得多