Пользовательские свойства .NET Core с EF и Code First

Я создал тестовый проект, в котором я играю с .NET Core 2.2 и Identity Framework 2.0.

Я успешно создал проект и настроил некоторые поля, чтобы понять, как анализируются данные от View до Controller и Stores.

Я рассматривал возможность настройки базы данных, чтобы пользователь также содержал ReferralID для проверки некоторых вещей, это ReferralID является целым числом.

Что я сделал, так это расширил IdentityUser этим настраиваемым свойством и создал собственную версию для каждого параметра удостоверения.

    public class ApplicationUsers : IdentityUser
    {
        public int? ReferralID { get; set; } = null;       
    }

Я также добавил базу данных в таблицы, которые были сгенерированы, но теперь приложение выдает ошибку:

Свойство CLR «ReferralID» не может быть добавлено к типу сущности «IdentityUser», поскольку оно объявлено для типа CLR «ApplicationUsers».

К сожалению, я не смог найти/понять, что не так, кажется, что-то не так в ModelBuilder, я не трогал конструктор моделей, и он был автоматически сгенерирован с помощью скаффолдера Scaffold-DbContext "Data Source=(localdb)\mssqllocaldb;Initial Catalog=CoreTest;Integrated Security=True" Microsoft.EntityFrameworkCore.SqlServer -Context GolfScoresContext -OutputDir Models -DataAnnotations -Project WebApi -Force

Какой шаг я пропустил? Или я не могу добавить пользовательские свойства в IdentityUser? Я видел, как люди боролись с этим и добавляли [NotMapped] к ApplicationUsers, но я думаю, что моя собственность не будет сохранена.


person Jean-Paul    schedule 20.08.2019    source источник


Ответы (1)


В конце концов я узнал, что причиной его выбрасывания должно быть что-то с HasKey, и оно не принимает расширенную модель. (используя: ядро Entity Framework с использованием нескольких DbContexts) В итоге я регенерировал модель который исправил это, я думаю, что что-то сломалось в OnModelCreating, как предлагается здесь https://github.com/aspnet/EntityFrameworkCore/issues/9133

person Jean-Paul    schedule 21.08.2019