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
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");
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());
}