獲得組裝我使用實體框架數據庫映射類,在我ObjectContext
類:使用Assembly.GetExecutingAssembly()從其他類庫
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes()
.Where(type => !String.IsNullOrEmpty(type.Namespace))
.Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));
foreach (var type in typesToRegister)
{
dynamic configurationInstance = Activator.CreateInstance(type);
modelBuilder.Configurations.Add(configurationInstance);
}
//Replace with ....
//modelBuilder.Configurations.Add(new EntityMap());
上面的代碼獲得所有類typeof(EntityTypeConfiguration<>)
。 如果我的'EntityMap'類與我的對象上下文在同一個類庫中,那沒關係,但是如果我在一個單獨的類庫中編寫了一個不起作用的函數。無法在ObjectContext
上識別Map classes
。
可能有其他解決方法;但是,在過去,我爲包含硬編碼的'Assembly.GetExecutingAssembly()'的方法添加了另一個參數,該參數接收包含類型的'Assembly'參數。然後''Assembly'從消費組裝中傳入。 –
謝謝@MetroSmurf,你能解釋更多嗎? –
從'var typesToRegister = Assembly.GetExecutingAssembly()。GetTypes()'將'Assembly.GetExecutingAssembly()'從包含方法中提取出來,以便它變成:'var typesToRegister = assemblyParamter.GetTypes()'。然後,只需將類型的Assembly引用作爲'assemblyParameter'的參數傳遞即可。 –