Я буду sh, чтобы расширить мою текущую модель идентичности, добавив новую сущность, которая будет связана (один к одному) с классом IdentityRole
. Проблема в том, что я sh хочу добиться этого путем абстрагирования TKey
, как объявлено в IdentityDbContext
, от IdentityRole<TKey>
в новой сущности.
Вот пример:
Класс Context (с поддержкой TKey в виде строки):
public partial class DataContext : IdentityDbContext<User, Role, string>
{
public DataContext(DbContextOptions options) : base(options) { }
public override DbSet<Role> Roles { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
Класс Role (наследуется от IdentityRole):
public class Role : IdentityRole
{
// Navigation properties:
public virtual NewEntity NewEntity { get; set; }
}
IdentityRole
реализован с string
по умолчанию, но он также унаследован от объявления IdentityDbContext
выше.
Класс NewEntity (просто идея):
public class NewEntity<TKey> where TKey : IEquatable<TKey>
{
public Guid Id { get; set; }
// Wish for this property to link to
// the Role class, which inherits from IdentityRole:
public TKey RoleId { get; set; }
// ...
// Navigation properties:
public virtual Role Role { get; set; }
}
Если бы я изменил свое объявление DataContext
, указав TKey
как любой другой тип вместо string
(например, например: public partial class DataContext : IdentityDbContext<User, Role, Guid>
), как мне настроить вещи, чтобы это изменение перешло в мой класс NewEntity
без указания типа в каждом классе?