我正在评估SubSonic 3.0用于我们的业务,以替代我们的POCO对象.我是SubSonic的新手,昨天安装它.我已经到了可以使用3.0 LINQ T4模板连接到一个数据库的地步,并且已经被使用SubSonic能够连接到一个应用程序中的多个数据库的承诺所吸引.
我的问题是我找不到任何关于如何将T4模板与多个数据库一起使用的文档(例如添加另一个连接字符串,设置Settings.ttinclude等).
我搜索了谷歌和Stackoverflow的答案,看看如何做到这一点,或者它是否可行.任何帮助,将不胜感激.
所以我似乎能够通过向web.config添加另一个connectionString来使其工作,然后为该connectionString添加第二组模板,它可以工作,但它看起来并不"干净"甚至真的那么干我.
通过添加多个.dbml文件,似乎我可以使用.NET内置的LINQ做几乎相同的事情.
有人可以给我一些推理,为什么我们不应该只使用内置的LINQ支持而不是像SubSonic这样的第三方ORM?
我正在尝试使用T4生成代码,但无法使用Net 3.5以编程方式运行TextTemplate。
通过保存TextTemplate生成代码文件,按预期方式工作。
我正在测试 T4 文本模板的运行时文本生成功能。
通常模板必须从应用程序的其他部分导入一些数据。为方便起见,模板构建的代码是一个分部类。您可以在项目的另一个文件中创建同一类的另一个部分。该文件可以包含一个带有参数、属性和函数的构造函数,这些参数、属性和函数既可以被嵌入在模板中的代码访问,也可以被应用程序的其余部分访问。
我试过这个(VS2017 - .NET 4.6.1)并在编译时得到以下错误 -
“CSharpFunction”不包含“TransformText”的定义
命名空间不能直接包含成员,例如字段或方法
编译转换:当前上下文中不存在名称“FunctionName”
当前上下文中不存在名称“ErrorGeneratingOutput”。
CSharpFunction.cs
partial class CSharpFunction
{
private string FunctionName;
public CSharpFunction(string functionName)
{
FunctionName = functionName;
}
}
Run Code Online (Sandbox Code Playgroud)
CSharpFunction.tt
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
public void <#=FunctionName#>()
{
Console.WriteLine("<#=FunctionName#>");
}
Run Code Online (Sandbox Code Playgroud)
程序.cs
class Program
{
static void Main(string[] args)
{
var obj = new CSharpFunction("Test");
string output …Run Code Online (Sandbox Code Playgroud) 所以我决定卷起袖子试试VS2008内置的T4代码生成.
我打算完成这篇文章的工作:http: //www.olegsych.com/2008/09/t4-tutorial-creatating-your-first-code-generator/
所以,我进入这一部分:"在主菜单中单击项目 - >添加新项目,然后在对话框中选择代码生成 - >文件模板".并发现我的机器上缺少代码生成类别.(在VB和C#项目中都尝试过).
是否可以单独下载以在您的计算机上安装T4?
所以,我从CodePlex下载了T4工具箱:http://t4toolbox.codeplex.com/Release/ProjectReleases.aspx?ReleaseId = 27563
事情似乎已经解决了.我的印象是VS2005需要下载,但VS2008不需要下载.哦,好吧,看起来它是一个新的版本,所以很可能值得下载.
现在看来我没有文章中显示的所有模板类型.我只有文件,模板,生成器,单元测试"生成器"没有在文章中列出,文章中有3个我没有.奇怪....
我正在使用Entity Framework并希望在上下文类中进行一些更改
对于前者 我正在创建一个连接字符串的构造函数,但问题是每次打开.edmx文件并保存它,然后我的更改不再存在.
有没有办法告诉我.edmx不要撤消我在上下文类或T4类中的更改?
我想在每次构建时构建我的 .tt 文件。我找到了这个解决方案(让 Visual Studio 在每个构建上运行一个 T4 模板,由Cheburek回答)并按照以下步骤运行它
Microsoft.TextTemplating.targets和<TransformOnBuild>true</TransformOnBuild>我的.csproj我现在的问题是:
我在 T4 文件中使用以下程序集导入:
<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="My.Example.Namespace.Path" #>
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为我需要访问在同一个项目中定义的类。但是现在(我认为因为 tt-transformation 是在构建时完成的第一件事)我不能使用这个命名空间导入,因为在构建时出现以下错误:
Error Compiling transformation: Metadata file '$(TargetPath)' could not be found.
Run Code Online (Sandbox Code Playgroud)
T4 文件在“正常”使用之前工作正常(保存 T4 文件时生成文件)
是否有可能以某种方式执行 T4 转换(作为最后一个构建步骤),以便我可以$(TargetPath)毫无问题地访问我的 T4 文件?
在ASP.NET(*.aspx和*.tt)什么是下列标记的含义是:<#= #> <# #> <#+ #>?