3

クレジットImobiliarioBB.Web

すべてのインターフェースはここで定義されます。プロジェクトCreditoImobiliarioBB.EntityFrameworkと EF6 への参照があります。ここでは構成 (FluentApi を使用) や移行は定義されてい
ません。

CreditoImobiliarioBB.EntityFramework

ここでは、汎用リポジトリと DbContext を定義します。すべての構成と移行はここで実装されます

CreditoImobiliarioBB.Domain

私たちのデザインドメイン。ここにすべてのドメイン クラスとインターフェイスがあります (例: IEntity)

CreditoImobiliarioBB.Repository

これがリポジトリの実装です。例えばEmployeesRepository

エラー

アプリケーションを実行すると、次のエラーが発生します。

コンテキスト 'CreditoImobiliarioContext' の移行が有効になっていますが、データベースが存在しないか、マップされたテーブルが含まれていません。移行を使用してデータベースとそのテーブルを作成します。たとえば、パッケージ マネージャー コンソールから「Update-Database」コマンドを実行します。

考慮事項

  1. EntityTypeConfiguration<>データベースは、「Update-Database」を介してすべての構成で作成されました

  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