我有Linq到一個項目中的.tt也添加了。我想在我的T4模板中使用該模型。這個問題如何提供參考。如果它的網站和控制檯應用程序也。從主機項目中使用T4中的某些類?
2
A
回答
2
讓我們來看看,如果我理解正確。
- 你有一個LINQ2SQL型號
- 你想一個.TT文件添加到使用上述模型生成的東西
如果這是正確的我會做什麼是項目一期工程加載.dbml文件(它是xml)並從中生成工件。
像這樣的東西可能(從DataClasses1.dbml產生一些班VS2010模板):
<#@ template language="C#" hostspecific="true" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ import nameSpace="System.Linq" #>
<#@ import nameSpace="System.Xml.Linq" #>
namespace MyProgram
{
using System.Data.Linq.Mapping;
<#
const string ns = "{http://schemas.microsoft.com/linqtosql/dbml/2007}";
const string DatabaseName = ns + "Database";
const string TableName = ns + "Table";
const string TypeName = ns + "Type";
const string ColumnName = ns + "Column";
var xdoc = XDocument.Load (Host.ResolvePath ("DataClasses1.dbml"));
var tables = xdoc.Elements (DatabaseName).Elements (TableName);
foreach (var table in tables)
{
var types = table.Elements (TypeName);
foreach (var @type in types)
{
var columns = @type.Elements (ColumnName);
#>
[Table (Name = "<#=GetAttribute (@type, "Name")#>")]
partial class <#=GetAttribute (@type, "Name")#>
{
<#
foreach (var column in columns)
{
#>
[Column (DbType = "<#=GetAttribute (column, "DbType")#>")]
public <#=GetAttribute (column, "Type")#> <#=GetAttribute (column, "Name")#> { get; set; }
<#
}
#>
}
<#
}
}
#>
}
<#+
static string GetAttribute (XElement element, string name, string defaultValue = null)
{
if (defaultValue == null)
{
defaultValue = "<" + name + "_attribute_not_found>";
}
if (element == null)
{
return defaultValue;
}
var attribute = element.Attribute (name ?? "");
if (attribute != null)
{
return attribute.Value ?? defaultValue;
}
else
{
return defaultValue;
}
}
#>
0
相關問題
- 1. 如何從庫項目調用主項目中的類/方法?
- 2. 如何使用T4將類從一個項目轉換爲另一個項目?
- 3. C#類的方法只能從某些項目調用嗎?
- 4. 複製集合中的某些項目
- 5. 使用DividerItemDecoration隱藏recyclerview中的某些項目分隔線
- 6. 從Eclipse CDT項目中完全排除某些目錄
- 7. 從T4模板考辨項目目錄
- 8. 僅包含CComboBox類型中的某些項目嗎?
- 9. 類項目不從主要項目
- 10. 項目中使用的類
- 11. 如何在IntelliJ中使用(激活)某些GIT項目?
- 12. pythonanywhere中的主機django allauth項目
- 13. 在T4中使用項目引用作爲程序集路徑
- 14. 如何在子項目中使用主項目中的標題?
- 15. 從ignore-glob中排除某些目錄
- 16. 從目錄中選擇某些文件
- 17. For循環與某些項目需要在特定的幾天的不同類別的某些項目
- 18. 使列表框項目中的某些字符加下劃線
- 19. 如何使對話框中的某些項目不可選?
- 20. R ggplot從圖例中移除某些項目
- 21. 如何從關係中刪除某些項目?
- 22. 如何從列表中提取某些項目?
- 23. 是否可以從Joomla中的模板索引文件中調用某些特定項目的項目?
- 24. 使用System.IO.Delete從目錄中刪除某些文件?
- 25. 有沒有辦法在網站項目中使用T4模板?
- 26. C++項目可以在Visual Studio 2010中使用T4嗎?
- 27. 如何在項目中使用T4自定義腳手架?
- 28. EF4.1在另一個C#項目中使用T4
- 29. 從某些類別中選擇
- 30. 電梯項目的主機
如果需要訪問源元素在該項目上如何去做這個博客提示:HTTP: //blogs.msdn.com/b/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx – FuleSnabel