クレジットImobiliarioBB.Web
すべてのインターフェースはここで定義されます。プロジェクトCreditoImobiliarioBB.EntityFramework
と EF6 への参照があります。ここでは構成 (FluentApi を使用) や移行は定義されてい
ません。
CreditoImobiliarioBB.EntityFramework
ここでは、汎用リポジトリと DbContext を定義します。すべての構成と移行はここで実装されます。
CreditoImobiliarioBB.Domain
私たちのデザインドメイン。ここにすべてのドメイン クラスとインターフェイスがあります (例: IEntity
)
CreditoImobiliarioBB.Repository
これがリポジトリの実装です。例えばEmployeesRepository
エラー
アプリケーションを実行すると、次のエラーが発生します。
コンテキスト 'CreditoImobiliarioContext' の移行が有効になっていますが、データベースが存在しないか、マップされたテーブルが含まれていません。移行を使用してデータベースとそのテーブルを作成します。たとえば、パッケージ マネージャー コンソールから「Update-Database」コマンドを実行します。
考慮事項
EntityTypeConfiguration<>
データベースは、「Update-Database」を介してすべての構成で作成されました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; }
}
}