CreditoImobiliarioBB.Web
Здесь определены все интерфейсы. Имеет ссылку на проект CreditoImobiliarioBB.EntityFramework
и EF6.
Здесь определяется Нет конфигурации (мы используем FluentApi) или миграции.
CreditoImobiliarioBB.EntityFramework
Здесь определен наш универсальный репозиторий и DbContext. Все конфигурации и миграции выполняются здесь.
CreditoImobiliarioBB.Domain
Наш домен дизайна. Вот все наши доменные классы и интерфейсы (например, IEntity
)
CreditoImobiliarioBB.Repository
Вот реализация репозитория. Например EmployeesRepository
Ошибка
Когда мы запускаем наше приложение, возникает следующая ошибка:
Миграция включена для контекста «CreditoImobiliarioContext», но база данных не существует или не содержит сопоставленных таблиц. Используйте миграцию для создания базы данных и ее таблиц, например, запустив команду «Обновить базу данных» из консоли диспетчера пакетов.
Соображения
База данных была создана со всеми конфигурациями, также известными как
EntityTypeConfiguration<>
, через «Обновление базы данных».Ошибка возникает в проекте
CreditoImobiliarioBB.EntityFramework
в универсальном классеRepository
Репозиторий.cs
Ошибка в строке return _unitOfWork.Context.Set<T>().Where(expression);
public abstract class Repository<T> : IRepository<T>
where T : class, IEntity
{
private readonly EFUnitOfWork _unitOfWork;
public Repository(IUnitOfWork unitOfWork)
{
_unitOfWork = (EFUnitOfWork)unitOfWork;
}
public void Delete(T obj)
{
_unitOfWork.Context.Set<T>().Remove(obj);
}
public void Store(T obj)
{
if (_unitOfWork.Context.Entry(obj).State == System.Data.Entity.EntityState.Modified)
_unitOfWork.Context.Set<T>().Attach(obj);
else
_unitOfWork.Context.Set<T>().Add(obj);
}
public IQueryable<T> All()
{
return _unitOfWork.Context.Set<T>();
}
public object Get(Type entity, int id)
{
return _unitOfWork.Context.Set(entity).Find(id);
}
public T Get(Expression<Func<T, bool>> expression)
{
return _unitOfWork.Context.Set<T>().SingleOrDefault(expression);
}
public T Get(int id)
{
return _unitOfWork.Context.Set<T>().Find(id);
}
public IQueryable<T> Query(Expression<Func<T, bool>> expression)
{
return _unitOfWork.Context.Set<T>().Where(expression);
}
public IUnitOfWork UnitOfWork
{
get { return _unitOfWork; }
}
}