我正在使用存储库模式我的datacontext类如下,
public class DataContext : DbContext
{
public DataContext()
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Customer>().ToTable("Customer");
modelBuilder.Entity<Orders>().ToTable("Orders");
}
public IDbSet<T> DBSet<T>() where T : class
{
return this.Set<T>();
}
}
我正在使用通用存储库,如下所示,
public interface IRepository<T> : IDisposable
{
IQueryable<T> FindAll();
T FindById(int id);
int Add(T TEntity);
int Update(T TEntity);
int Delete(T TEntity);
int Commit();
}
实施是,
public class SqlRepository<T> : IRepository<T> where T : class
{
private DataContext _context;
private readonly IDbSet<T> _dbSet;
bool disposing;
public SqlRepository()
{
_context = new DataContext();
_dbSet = _context.DBSet<T>();
}
public IQueryable<T> FindAll()
{
return _dbSet;
}
public T FindById(int id)
{
return _dbSet.Find(id);
}
我正在使用基于配置的容器,
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="CustomerManagementAPI.Data"/>
<namespace name="CustomerManagementAPI.Data"/>
<container>
<register type="IRepository" mapTo="SqlRepository">
<lifetime type="singleton"/>
</register>
<register type="ICustomerService" mapTo="CustomerService">
<lifetime type="singleton"/>
</register>
</container>
</unity>
尝试使用参数实例化控制器时出现以下错误 无法解析类型名称或别名IRepository。请检查您的配置文件并验证此类型名称。
答案 0 :(得分:0)
将其注册为通用:
<register type="IRepository[]" mapTo="SqlRepository[]">
<lifetime type="singleton"/>
</register>