实体框架6.架构名称

时间:2013-02-10 18:54:28

标签: entity-framework entity-framework-6

我想为我的实体分配架构名称,而不指定表名。现在,我只能这样做:modelBuilder.Entity<T>().ToTable("MyEntities", "myschema");有没有办法做一些事情:modelBuilder.Entity<T>().ToTable("myschema")?请考虑我不能使用PluralizationService并手动计算tablename,因为PluralizationService变成了内部...

1 个答案:

答案 0 :(得分: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;
 }
}