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


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

其余特性自己发掘

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

posted on   亚历山大同志  阅读(1824)  评论(3编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2007年3月 >
25 26 27 28 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

统计

点击右上角即可分享
微信分享提示