System.Data.Entity.Core.MappingException, abc in на концептуальной стороне не могут быть сопоставлены с типом 'System.Enum' на стороне объекта - PullRequest
0 голосов
/ 19 октября 2018

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

System.Data.Entity.Core.MappingException: 'Тип' abc.Database.Enum 'на концептуальной стороне не может быть сопоставлен с типом' System.Enum 'на стороне объекта.Оба типа должны быть абстрактными или оба должны быть конкретными типами. '

enter image description here

Что я делаю

  1. используйте db first подход.Модель класса db основана на фактической базе данных
  2. . Создайте собственный класс dbcontext на основе класса dbcontext по умолчанию.пользовательский класс принимает параметр.

Например,

public class TestDbContext:DbContext 
{
    public TestDbContext(string connection) : base(connection) 
    {
    }
    public DbSet<user_menu> user_menus { get; set; }
}
создайте объект testDBContext, используя имя базы данных в качестве аргумента, найдите dbset и измените / сохраните результат в списке с помощью ToList (). передать сохраненный список для просмотра.

Ошибка выдаст на шаге 4.

Вещи, которые я пробовал:

  • реконструировать класс модели db
  • реконструировать пользовательский класс dbcontext
  • удалить папку bin / obj, очистить решение и перестроить.

Ни один из вышеперечисленных методов не работает.

Надеюсь, кто-нибудь может пролить немного света на этот.Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

Не могу поверить, что я потратил два дня на это.В основном, произошло то, что в одной из моделей dbset, возвращенных из dbcontext, есть опечатка.Я случайно установил одно из свойств в модели для перечисления.Изменил его обратно на строковый тип и работал.Сообщение об ошибке немного расплывчато с точки зрения указания на то, где смотреть на вещи, но это хороший урок для меня.Я нашел проблему, выполнив поиск по «enum» по всему проекту.

...