代码改变世界

一起谈.NET技术,Linq to SQL T4 代码生成器 (-)访问 DataContext 对象

  狼人:-)  阅读(383)  评论(0编辑  收藏  举报

这个工具,是在一个项目中提取出来的,现在免费提供给大家使用。

本文介绍的 Linq to SQL T4 代码生成器有如下特点:

1、支持 dbml 文件。能够访问 dbml 设计器中的对象。

2、可能通多修改模版来生成代码。

3、可以生成多个文件。比如:一个类一个文件。

准备:

1、T4 代码编辑器(goole 即可)。尽管不是必须,但是为了方便代码的编辑,还是建议安装一个。

2、下载安装 Decode_VS2008 (必须)。

开始:

1、创建一个项目。然后运行 LicenseFileGenerator.exe 生成一个名为 deco.lic 的授权文件,并添加到项目中。

 

其中 Assembly 为项目生成文件的名称,Company 为项目中的公司名称,如果没有,可以不填。在这里生的 assembly 文件名为 ConsoleApplication1.exe,因此要 Assembly 文件本框中填入的是 ConsoleApplication1.exe ,而并非 ConsoleApplication1,公司名称为空,因此可以不填。

点击 Generate 按钮后在当前路径中生成一个 deco.lic 文件。请把该文件添加到项目中去。

2、创建名为  Northwind.dbml 的文件,并禁用原来的代码生成器。选项 Northwind.dbml 文件。把 Custom Tool 选项清空(默认为 MSLinqToSQLGenerator)。

3、创建一个名为 Northwind.tt  的文件。打开 Northwind.tt 文件进行编辑。然后按保存生成代码。

内容如下:

复制代码
<#@ template inherits="ModelingTextTransformation" language="C#" debug="true" hostspecific="True"#>
<#@ QuickCode processor="DbmlProcessor" requires="ModelFile='Northwind.dbml'"#>
<#@ output extension=".cs" #>
<#@ import namespace = "System.Text.RegularExpressions" #>

using ALinq;
using ALinq.Mapping;

namespace <#= DataContext.ContextNamespace #>
{
public partial class <#= DataContext.Name #> : ALinq.DataContext
{
public <#= DataContext.Name #>(string connection) :
base(connection)
{
}

<# foreach(ITable table in DataContext.Tables){ #>
public Table<<#= table.Type.Name #>> <#= table.Member #>
{
get
{
return this.GetTable<<#= table.Type.Name #>>();
}
}
<# } #>
}
}
复制代码

下来解释一下上面的代码。我们现在要关注的 DataContext 对象。这个对象很重要,Dbml 设计器的对象,都是通过 DataContext 对象来进行访问。你可以把它和 Dbml 设计器的中的 DataContext 对应起来。

关于是 DataContext 的成员,请参考:http://www.alinq.org/document/decode.htm

示例代码:https://files.cnblogs.com/ansiboy/ConsoleApplication1.zip

完整范例代码:https://files.cnblogs.com/ansiboy/JDataDemo_0.9.zip

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示