3

CreditoImobiliarioBB.Web

所有接口都在这里定义。参考了项目CreditoImobiliarioBB.EntityFramework和EF6。
此处未定义配置(我们使用 FluentApi)或迁移。

CreditoImobiliarioBB.EntityFramework

这里定义了我们的通用存储库和 DbContext。所有配置和迁移都在这里实现

CreditoImobiliarioBB.Domain

我们的设计领域。这是我们所有的领域类和接口(例如IEntity

CreditoImobiliarioBB.Repository

这是存储库实现。例如EmployeesRepository

错误

当我们运行我们的应用程序时,会出现以下错误:

为上下文“CreditoImobiliarioContext”启用了迁移,但数据库不存在或不包含映射表。使用迁移来创建数据库及其表,例如通过从包管理器控制台运行“更新数据库”命令。

注意事项

  1. 数据库已EntityTypeConfiguration<>通过“更新数据库”使用所有配置创建

  2. 错误发生在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; }
    }
}
4

0 回答 0