1
我正在嘗試編寫T4模板來爲我的模型類生成自定義視圖,模型類位於另一個Assembly中,映射基於EF6流利API。如何在T4模板中「讀取」EF6 EntityTypeConfiguration?
目前,我正在使用反射來獲取屬性的名稱和類型,我的問題是如何讀取ModelConfiguration?例如獲取主鍵和相關模型的外鍵等。
我正在嘗試編寫T4模板來爲我的模型類生成自定義視圖,模型類位於另一個Assembly中,映射基於EF6流利API。如何在T4模板中「讀取」EF6 EntityTypeConfiguration?
目前,我正在使用反射來獲取屬性的名稱和類型,我的問題是如何讀取ModelConfiguration?例如獲取主鍵和相關模型的外鍵等。
樣本訪問模型。注意DataSpace有其他Enum值
public void EFTools2Test()
{
var context = new MyContext("MYConnie");
ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
MetadataWorkspace workspace = objContext.MetadataWorkspace;
IEnumerable<EntityType> managedTypes = workspace.GetItems<EntityType>(DataSpace.OSpace);
var result = new List<Type>();
foreach (var managedType in managedTypes) {
Console.WriteLine(managedType.FullName);
foreach (var p in managedType.Properties) {
Console.WriteLine(p.Name);
}
}
}
public void EFToolsTest() {
// http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.dataspace(v=vs.110).aspx
var context = new MyContext("MYConnie");
ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
MetadataWorkspace workspace = objContext.MetadataWorkspace;
var xyz = workspace.GetItems<EntityType>(DataSpace.SSpace);
foreach (var ET in xyz) {
foreach (var sp in ET.Properties) {
Debug.WriteLine(sp.Name + ":" + sp.MaxLength);// just as an example
}
}
}
這是否會觸發數據庫?因爲我正在寫的T4模板不知道連接字符串。謝謝。 –
通過EF訪問內存中建立的模型。嘗試一下 –