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

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

本文介绍的 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

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

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

时间: 2024-10-22 06:21:42

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

Linq to SQL T4 代码生成器 (-)访问 DataContext 对象

这个工具,是在一个项目中提取出来的,现在免费提供给大家使用. 本文介绍的 Linq to SQL T4 代码生成器有如下特点: 1.支持 dbml 文件.能够访问 dbml 设计器中的对象. 2.可能通多修改模版来生成代码. 3.可以生成多个文件.比如:一个类一个文件. 准备: 1.T4 代码编辑器(goole 即可).尽管不是必须,但是为了方便代码的编辑,还是建议安装一个. 2.下载安装 Decode_VS2008 (必须). 开始: 1.创建一个项目.然后运行 LicenseFileGene

一起谈.NET技术,Linq to SQL T4 代码生成器 (二)访问设计器中的 Table 对象

在上一篇文章中,介绍了如何访问 DataContext 对象,下面接着来讲解一下如何访问设计器中的表对象,并生成生体类代码.从 Northwind 数据库中拖一个表到设计器中.拖出来后,记得保存 dbml 文件,否则是无法访问到这个表的. 在这里拖的是 Catories 表,如下图所示: 我们可以通过访问 DataContext.Tables 来访拖放到设计器中的表.代码如下: <# foreach(ITable table in DataContext.Tables){ }#> 现在再来看看

Linq to SQL T4 代码生成器 (二)访问设计器中的 Table 对象

在上一篇文章中,介绍了如何访问 DataContext 对象,下面接着来讲解一下如何访问设计器中的表对象,并生成生体类代码.从 Northwind 数据库中拖一个表到设计器中.拖出来后,记得保存 dbml 文件,否则是无法访问到这个表的. 在这里拖的是 Catories 表,如下图所示: 我们可以通过访问 DataContext.Tables 来访拖放到设计器中的表.代码如下: <# for each(ITable table in DataContext.Tables){ }#> 现在再来看

LINQ to SQL语句(22)之DataContext

DataContext DataContext作为LINQ to SQL框架的主入口点,为我们 提供了一些方法和属性,本文用几个例子说明DataContext几个典型的应用. 创建和删除数据库 CreateDatabase方法用于在服务器上创建数据库. DeleteDatabase方法用于删除由DataContext连接字符串标识的数据 库. 数据库的名称有以下方法来定义: 如果数据库在连接字符串 中标识,则使用该连接字符串的名称. 如果存在DatabaseAttribute属性 (Attrib

LINQ to SQL实现数据访问通用基类(续)

在我们基于Domain驱动模式开发面向对象的多层架构的时候,层和层之间数据的传输对象(DTO)往往 简化为领域对象模型,在上文中就是我们利用LINQ TO SQL对象设计器生成的Bill,Customer等实体类. 存在的问题 通常的做法,我们把这些实体类单独分成一层,这样程序分层划分成如下: 数据访问层(Data Access Layer) 业务层 (Business Layer) 用户界面层(UI Layer) 实体层(Entity Layer) 注意,多层应用程序,一般遵守这样的规则:UI

LINQ to SQL实现数据访问通用基类

LINQ to SQL让人着迷,在.Net应用程序当中,.它提供了一种安全,强大和非常灵活的方式执行数据 访问,在当前微软传道者介绍上看,很容易上手. 不幸的是,当你对LINQ进行仔细研究后,我发现在多层架构中使用LINQ的并不是十分容易. 本文介绍用LINQ to SQL实现数据层的典型的问题点 ,并提供了一个简单,方便和灵活的方式来克服 它们. 本文附带的LING to SQL 实现数据访问通用类有以下的特点: 实现了存储库模式,你可以用不到10行代码执行LINQ实体类型的CRUD (Cre

linq to sql中的自动缓存(对象跟踪)

这篇东西应该至少一年前就写的,不过因为个人太懒,一直没记下来,今天补上.   linq to sql中,对于同一个DataContext上下文环境,根据表主键选择记录时(当然这里所指的"记录"会自动转成"对象"),如果该记录已经被select过,默认情况下会被自动缓存下来,下次再选择时,将自动返回已缓存的对象,而不是重新从数据库里查询.   在很多情况下(特别是查询的场景),这会提高性能(因为避免了数据库重复查询),但是也时候也会带来麻烦:   比如我们取出一个对象

一起谈.NET技术,基于SQL Server 2008 Service Broker构建企业级消息系统

1.引言 Microsoft 在SQL Server 2005引入了服务代理 (Service Broker 简称SSB) 为技术支持代理设计模式和面向消息的中间件 (MOM) 的原则.Service Broker在SQL Server 2008上得到完善, SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持. 这使开发人员可以轻松地创建使用数据库引擎组件在完全不同的数据库之间进行通信的复杂应用程序.开发人员可以使用 Servi

一起谈.NET技术,Powershell简介及其编程访问

这个工具可以单独使用,完全可以取代cmd.exe.例如如下: 但它的功能远不止于此,例如我们可以很容易地获取所有的进程名称: 再来看一个,下面这个例子是获取当前正在运行的服务列表.(可以用条件很方便地筛选): 除此之外,Powershell还支持定制,例如微软很多产品都提供了专门的Powershell插件(典型的有:SQL Server,SharePoint Server, Exchange Server等).通过这些特殊的外壳,可以实现对服务器的管理.功能非常强大.例如下面的SQLPS,可以像