用T4连接数据库?

时间:2011-01-28 18:24:32

标签: visual-studio-2010 t4

如何使用T4连接到本地数据库?,我尝试这些代码但不起作用 Iam使用vs.net 2010和SQL2008进行Windows身份验证,Iam尝试连接到我的本地服务器,到该数据库获取其属性

<#@ template language="C#v3.5" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #>
<#@ assembly name="Microsoft.SqlServer.Smo" #>
<#@ assembly name="Microsoft.SqlServer.Management.Sdk.Sfc" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="Microsoft.SqlServer.Management.Smo" #>
<#@ import namespace="Microsoft.SqlServer.Management.Common" #>


namespace T4SNUG.Entities
{

<# Server server = new Server(".");
Database db = server.Databases["Chinook"]};#>

1 个答案:

答案 0 :(得分:2)

是的,这应该有效。

您是否在输出窗口中看到错误消息或异常?

我可以在T4中使用以下代码:

<#@ output extension=".txt" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Core.dll" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #>
<#@ assembly name="Microsoft.SqlServer.Smo" #>
<#@ assembly name="Microsoft.SqlServer.Management.Sdk.Sfc" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="Microsoft.SqlServer.Management.Smo" #>
<#@ import namespace="Microsoft.SqlServer.Management.Common" #>


<# 
    var server = new Server(".\\SQLEXPRESS");
    var db = server.Databases["moviereviews"];
    foreach(var property in db.GetType()
                              .GetProperties()
                              .Where(p=>p.PropertyType == typeof(string)))
    {
#>
        <#= property.Name #> : <#= property.GetValue(db, null) #>
<#      
    }
#>

它给了我:

Name : moviereviews
Collation : SQL_Latin1_General_CP1_CI_AS
DatabaseSnapshotBaseName : 
DefaultFileGroup : PRIMARY
DefaultFileStreamFileGroup : 
DefaultFullTextCatalog : 
DefaultSchema : dbo
MirroringPartner : 
MirroringPartnerInstance : 
MirroringWitness : 
...