我有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. 從T4模板調用同一個項目中的類
- 2. Play Framework 2.2-使用主項目中的子項目中的類
- 3. 將div中的某些項目居中
- 4. 如何從庫項目調用主項目中的類/方法?
- 5. 如何使用T4將類從一個項目轉換爲另一個項目?
- 6. C#類的方法只能從某些項目調用嗎?
- 7. Netbeans:Java項目中的「主」類
- 8. 從編譯禁用XCode項目中的某些文件
- 9. 複製集合中的某些項目
- 10. 使用JQuery排除某些項目
- 11. 從Maven項目中的類路徑中排除某些依賴關係
- 12. 從T4模板考辨項目目錄
- 13. 使用DividerItemDecoration隱藏recyclerview中的某些項目分隔線
- 14. 如何忽略表單中的某些項目? (使用MVC 3)
- 15. 從Eclipse CDT項目中完全排除某些目錄
- 16. 只對某些主機啓用shell_exec
- 17. 如何將類添加到循環php中的某些項目?
- 18. 僅包含CComboBox類型中的某些項目嗎?
- 19. 類項目不從主要項目
- 20. 忽略項目結構中的某些文件(自定義項目類型)
- 21. 在Hashmap中列出某些項目,Java
- 22. ggtern禁用ggplot2中的某些主題
- 23. 從列表中刪除某些項目重複的列表
- 24. 項目中使用的類
- 25. 如何在IntelliJ中使用(激活)某些GIT項目?
- 26. pythonanywhere中的主機django allauth項目
- 27. 禁止某些機器人使用htaccess訪問某個目錄
- 28. 在T4中使用項目引用作爲程序集路徑
- 29. 主機庫項目爲他人在項目中使用作爲依賴項
- 30. 如何在子項目中使用主項目中的標題?
如果需要訪問源元素在該項目上如何去做這個博客提示:HTTP: //blogs.msdn.com/b/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx – FuleSnabel