2

テーブル名を指定せずに、エンティティにスキーマ名を割り当てたいです。今、私ができることは次のとおりです。modelBuilder.Entity<T>().ToTable("MyEntities", "myschema");次のようなことを行う方法はありますmodelBuilder.Entity<T>().ToTable("myschema")か? PluralizationService が内部になるため、PluralizationService を使用して tablename を手動で計算できないことを考慮してください...

4

1 に答える 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 に答える