Aru*_*una 8 c# asp.net entity-framework-core asp.net-core-1.1 ef-core-2.1
我正在开发一个多租户应用程序ASP.NET Core 2.1。我正在使用AspNetCore.Identity.EntityFrameworkCore用户管理框架。我想添加一个唯一索引结合NormalizedName使用TenantId的Role表。此外,在用户表NormalizedUserName与TenantId在User表中。
这不允许我创建该索引,因为身份为 Role 表RoleNameIndex和UserNameIndexUser 表创建了默认的唯一索引。OnModelCreating在 EF Core中的方法中配置它的最佳方法是什么?
modelBuilder.Entity<User>().HasIndex(u => new { u.NormalizedUserName, u.TenantId }).HasName("UserNameIndex").IsUnique(true);
modelBuilder.Entity<Role>().HasIndex(u => new { u.NormalizedName, u.TenantId }).HasName("RoleNameIndex").IsUnique(true);
Run Code Online (Sandbox Code Playgroud)
Iva*_*oev 14
fluent API 目前不提供删除先前定义的索引(如 base 定义的有问题的索引OnModelCreating)的方法,但可变实体元数据可以通过IMutableEntityType.RemoveIndex方法删除。
它可以像这样使用:
modelBuilder.Entity<User>(builder =>
{
builder.Metadata.RemoveIndex(new[] { builder.Property(u => u.NormalizedUserName).Metadata });
builder.HasIndex(u => new { u.NormalizedUserName, u.TenantId }).HasName("UserNameIndex").IsUnique();
});
modelBuilder.Entity<Role>(builder =>
{
builder.Metadata.RemoveIndex(new[] { builder.Property(r => r.NormalizedName).Metadata });
builder.HasIndex(r => new { r.NormalizedName, r.TenantId }).HasName("RoleNameIndex").IsUnique();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
923 次 |
| 最近记录: |