применение объекта с типом ICollection <Enum> - PullRequest
0 голосов
/ 18 апреля 2020

В ASP. NET 3.1 проекте CORE, используя EF, я пытаюсь реализовать объект, который имеет тип ICollection<Enum> type.

. Проблема в том, что после прочтения некоторых руководств и попытки чтобы перенести его в мою базу данных, что-то кажется отключенным, я приложу скриншоты и код для большего понимания.

это класс объекта:

public class UsersCredentialsModel
{
    [Key]
    public string UserId { get; set; }
    public ICollection<ServiceModel> Services { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string Hash { get; set; }
}

Класс ServiceModel:

 public class ServiceModel
 {
    [Key]
    public string ServiceId { get; set; }
    public Service Service { get; set; }
 }

Класс обслуживания Enum:

 public enum Service : int
 {
    Badoo = 0,
    Tinder = 1,
    Grinder = 2,
    OkCupid = 3
 }

Это класс AppDbContext:

public class AppDbContext : IdentityDbContext<ApplicationUser>
  {
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    { 
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<Message>().Property(m => m.Service).HasConversion<int>();
        builder.Entity<ApplicationUser>().HasMany<Message>(m => m.Messages).WithOne(u => 
        u.User).IsRequired();
        builder.Entity<ServiceModel>().Property(m => m.Service).HasConversion<int>();
        builder.Entity<UsersCredentialsModel>().HasMany(s => s.Services);


        base.OnModelCreating(builder);

    }

    public DbSet<UsersCredentialsModel> UsersCredentialsModels { get; set; }
    public DbSet<ServiceModel> ServiceModel { get; set; }
    public DbSet<Message> Messages { get; set; }
    public DbSet<CookieModel> CookieModel { get; set; }
    public DbSet<ProjectionModel> ProjectionModel { get; set; }

 }

Это изображение схемы базы данных UsersCredentialsModel:

enter image description here

** Я считаю, что должен быть файл с именем «ServiceId», соответствующий идентификатору второй таблицы.

и, наконец, изображение ServiceModel схема:

enter image description here

из того, что я понял, вы не можете реализовать ICollection типа ENUM и вам нужно обернуть его в класс, так что в основном вам нужен объект для хранения ENUM с идентификатором и другим идентификатором, который содержит ID пользователя. Проблема заключается в том, что таблица UserCredentialsModel должна содержать свойство Id ServiceId, полученное из таблицы ServiceModel. потому что у класса есть поле ICollection, но при миграции он ничего не делает

...