テーブル名を指定せずに、エンティティにスキーマ名を割り当てたいです。今、私ができることは次のとおりです。modelBuilder.Entity<T>().ToTable("MyEntities", "myschema");
次のようなことを行う方法はありますmodelBuilder.Entity<T>().ToTable("myschema")
か? PluralizationService が内部になるため、PluralizationService を使用して tablename を手動で計算できないことを考慮してください...
質問する
819 次
1 に答える
1
どうですか...
var t = typeof (T);
var name= t.Name;
modelBuilder.Entity<T>().ToTable(name, "myschema")
コンテキストから DbSet の複数形の名前が必要な場合
public DbSet<Single> Plural{ get; set; }
次に、この小さな拡張機能を作り直して、必要な値を返すことができます。ループなしの両方のコンボ。しかし、あなたは正しいバリエーションを見つけると確信しています...
public static class BosDalExtensions
{
public static List<string> GetModelNames(this DbContext context ) {
var model = new List<string>();
var propList = context.GetType().GetProperties();
foreach (var propertyInfo in propList)
{
if (propertyInfo.PropertyType.GetTypeInfo().Name.StartsWith("DbSet"))
{
model.Add(propertyInfo.Name);
}
}
return model;
}
public static List<string> GetModelTypes(this DbContext context)
{
var model = new List<string>();
var propList = context.GetType().GetProperties();
foreach (var propertyInfo in propList)
{
if (propertyInfo.PropertyType.GetTypeInfo().Name.StartsWith("DbSet" ))
{
model.Add(propertyInfo.PropertyType.GenericTypeArguments[0].Name);
}
}
return model;
}
}
于 2013-02-11T14:48:58.350 に答える