【发布时间】:2013-11-20 12:05:16
【问题描述】:
您好,我正在尝试更改此处找到的代码示例 http://imar.spaanjaars.com/577/aspnet-n-layered-applications-implementing-a-repository-using-ef-code-first-part-5
在他的示例中,他使用了结构映射,当我将其转换为 Windsor 时,我可以使用以下方法使其与一个存储库一起工作。
container.Register(Component.For<IUnitOfWorkFactory>().ImplementedBy<EFUnitOfWorkFactory>(),
Component.For<IUnitOfWork>().ImplementedBy<EFUnitOfWork>(),
Component.For<Model.Repositories.IPeopleRepository>().ImplementedBy<PeopleRepository>().LifestyleTransient());
但我真正想做的是将所有基于 irepository 的接口映射到他们的实现。 这里是IRepository,T是实体,K是主键类型
public interface IRepository<T, K> where T : class
{
}
它的实现是
public abstract class Repository<T> : IRepository<T, int>, IDisposable where T : DomainEntity<int>
{
}
我的控制器具有接口 IPeopleRepository 作为构造函数参数。
public interface IPeopleRepository : IRepository<Person, int>
{
}
public class PeopleRepository : Repository<Person>, IPeopleRepository
{
}
我想要一个注册器来注册所有存储库,类似这样,但它不匹配,我收到错误 Service 'Spaanjaars.ContactManager45.Model.Repositories.IPeopleRepository' 未注册
container.Register(Component.For(typeof(IRepository<,>))
.ImplementedBy(typeof(Repository<>))
.LifestylePerWebRequest());
我在这方面缺少什么?是因为我的 irepository 有 2 个泛型类型吗?
【问题讨论】:
标签: asp.net-mvc-4 c#-4.0 entity-framework-5 castle-windsor irepository