【发布时间】:2018-02-08 11:40:44
【问题描述】:
我正在尝试使用 Identity Framework Core 配置多租户应用程序。
我已经成功地创建了一个自定义 ApplicationUser 来使用 TenantId 覆盖 IdentityUser ,这里使用说明:https://www.scottbrady91.com/ASPNET-Identity/Quick-and-Easy-ASPNET-Identity-Multitenancy(这些说明不适用于 Identity Framework Core,但它们有所帮助)。
我在创建数据库表时卡住了。
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<Models.User>(entity =>
{
entity.HasIndex(a => new { a.NormalizedUserName, a.TenantId }).HasName("UserNameIndex").IsUnique();
});
}
我的意图是替换 base.OnModelCreating() 中定义的 UserNameIndex,使其成为两列上的索引,而不仅仅是 NormalizedUsername。但这只会导致错误:
'User' 上的索引 {'NormalizedUserName', 'TenantId'} 和 'User' 上的 {'NormalizedUserName'} 都映射到 'Security.AspNetUser.UserNameIndex' 但具有不同的列({'NormalizedUserName', ' TenantId'} 和 {'NormalizedUserName'})。
显然我想撤消在 base.OnModelCreating() 调用中创建的索引,然后再将其添加到我的代码中,但找不到执行此操作的方法。
有没有办法从模型创建器中删除在模型创建链的上游创建的索引?
【问题讨论】:
标签: c# entity-framework asp.net-identity ef-fluent-api