Типы сущностей States не являются частью модели для текущего контекста в Entity Framework. - PullRequest
0 голосов
/ 17 марта 2019

Я получаю сообщение об ошибке в своем универсальном репозитории.

Я использую универсальный репозиторий с Entity Framework и подходом на основе базы данных.

Это мой context.cs:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    throw new UnintentionalCodeFirstException();
}

 public virtual DbSet<tblUser> tblUsers { get; set; }
 public virtual DbSet<User> Users { get; set; }
 public virtual DbSet<tblState> tblStates { get; set; }`

HomeRepository : когда я использую этот код как неуниверсальный, я получаю записи

public IEnumerable<States> GetAllwithoutGeneric()
{
    return _dbContext.Set<tblState>() .
    Select(x => new States {  name = x.name}).ToList();
}

var state1 = homeRepository.GetAllwithoutGeneric();

И получаю результат в state1переменная контроллера.Приведенный выше код работает нормально.

Как только я использую общий репозиторий

public IQueryable<T> GetAllState()
{
  return _dbContext.Set<T>();
}

и вызываю приведенный выше код следующим образом:

HomeRepository<States> homeRepository = new HomeRepository<States>();
var state = homeRepository.GetAllState().ToList();

Я получаю ошибку:

System.InvalidOperationException: Тип сущности Состояния не является частью модели для текущего контекста

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

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Ваш DbSet тип tblState, а не States. Поэтому вы должны использовать tblState вместо States следующим образом:

HomeRepository<tblState> homeRepository = new HomeRepository<tblState>();
var state = homeRepository.GetAllState().ToList();

Теперь, если вы хотите преобразовать вывод в States, сделайте следующее:

var state = homeRepository.GetAllState()
                          .Select(x => new States {  name = x.name}).ToList();
0 голосов
/ 27 марта 2019

Ребята Я решил сам, создав другой библиотечный проект и сохранив все сущности с тем же именем, которое было создано EF в библиотечном проекте.

Теперь мы можем дать ссылку на этот библиотечный проект ви репозиторий, и Entity Framework.

Теперь оба проекта имеют одну и ту же сущность, поэтому ошибок не будет.

Спасибо, Шериф

...