Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to specify a schema for a many-to-many relationship table?

I have a User-Role many-to-many relationship, specified by this excerpt from an EntityTypeConfiguration<Role> derived class that allows me to specifiy schemas for single tables, e.g:

[Schema(SchemaNames.ParkPay)]
class WeekDayConfig : EntityTypeConfigurationWithSchema<WeekDay>
{
    internal WeekDayConfig()
    {
        Ignore(t => t.IsDeleted);
        Property(p => p.Name)
            .IsRequired()
            .HasMaxLength(20);
    }
}

Now, for Role, the configuration class contains this code, and the resultant table UserRole gets created under the 'dbo' schema, not my desired schema. This is that code:

[Schema(SchemaNames.ParkPay)]
internal class RoleConfig : EntityTypeConfigurationWithSchema<Role>
{
    public RoleConfig()
    {
        HasMany(t => t.Users)
            .WithMany(t => t.Roles)
            .Map(m =>
                     {
                         m.ToTable("UserRole");                            
                         m.MapLeftKey("RoleId");
                         m.MapRightKey("UserId");
                     });
    }
}

Is there anything I can do, except script a schema change during the seeding phase of initialization, to have table UserRole created under the 'parkpay' schema and not the 'dbo' schema?

like image 893
ProfK Avatar asked Jun 14 '13 16:06

ProfK


1 Answers

I don't see why this wouldn't work:

public RoleConfig()
{
    HasMany(t => t.Users)
    .WithMany(t => t.Roles)
    .Map(m =>
    {
        m.ToTable("UserRole","parkpay");                            
        m.MapLeftKey("RoleId");
        m.MapRightKey("UserId");
    });
}
like image 186
SOfanatic Avatar answered Nov 12 '22 10:11

SOfanatic