Entity Framework 6 - Code First: table schema from classes' namespace

后端 未结 3 1073
死守一世寂寞
死守一世寂寞 2021-02-13 19:00

Does any know if one can set the table schema of code first classes based on the classes\' namespace?

For example, every class in namespace Core.Foo would

3条回答
  •  日久生厌
    2021-02-13 19:24

    Well, you could specify the schema name using one of these two options:

    • Using Data Annotations:

      [Table("TableName","Foo")]
      public class Entity
      {
      }
      
    • Using Fluent Api:

      modelBuilder.Entity().ToTable("TableName", "Foo");
      

    Update

    Digging more in this subject, I think what you looking for is a Custom Convention of EF:

    public class CustomSchemaConvention : Convention
    {
        public CustomSchemaConvention()
        {
            Types().Configure(c => c.ToTable(c.ClrType.Name, c.ClrType.Namespace.Substring(c.ClrType.Namespace.LastIndexOf('.') + 1)));
        }
    }
    

    Then, in your context, you need to override the OnModelCreating method to add the new convention:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
       modelBuilder.Conventions.Add(new CustomSchemaConvention());
    }
    

提交回复
热议问题