在做一個asp.net core的專案,因為用插件化開發。
然后,動態映射到表里。
如果所有表在同一個資料庫his里,那么這段代碼沒問題。
但是我想把部分表(assets)分離出來。然后添加了schame引數,但是發現不起作用,他還是映射為his.xxxx。
之前我弄一個專案的時候,不是用動態加載的方法,但是可以的。很奇怪不知道為什么。請大神指教一下。
之前
↓這是動態的代碼。現在的專案
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var modelAssemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a=>a.FullName.Contains("HIS.Models"));
if (modelAssemblies.Count() > 0)
{
foreach(var modelAssembly in modelAssemblies)
{
try
{
var models = modelAssembly.GetTypes();
foreach (var model in models)
{
var attr = model.GetCustomAttributes(typeof(SchemaAttribute), true);
if (attr?.Length>0)
{
var schemaattr = attr.First() as SchemaAttribute;
var schema = schemaattr.Name.ToLower();// assets
modelBuilder.Entity(model).ToTable(model.Name, schema);
Console.WriteLine($"loaded schema:{schema},table:{model.Name}");
}
else
{
modelBuilder.Entity(model).ToTable(model.Name);
Console.WriteLine($"loaded schema:default,table:{model.Name}");
}
}
}
catch(Exception err)
{
Console.WriteLine(err.Message);
}
}
}
//base.OnModelCreating(modelBuilder);
}
↓這是之前的專案的代碼,可以映射成功。
//PersonnelSchema是一個靜態字串
modelBuilder.Entity<Education>().ToTable(nameof(Education), PersonnelSchema);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/268711.html
標籤:ASP.NET
上一篇:回圈中兩個條件
