写了个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类型,就和我们手写的一样
其余特性自己发掘
还有你会发现查询的时候第二次会比第一次快得多
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述