UnitOfWorkFactory类未按预期初始化

时间:2012-03-18 13:28:58

标签: asp.net-mvc

为了我的学习,我基于现有(和工作)解决方案从头开始创建了一个新的MVC应用程序。问题是我的 UnitOfWorkFactory 类没有初始化,我不知道为什么?

这是我的班级:

public class OrderSampleUserService : ServiceBase, IOrderSampleUserService
{
    public IEnumerable<Order> GetOrders()
    {
        using (var unitOfWork = UnitOfWorkFactory.Create())
        {
            var orderRepository = unitOfWork.Create<Order>();
            return orderRepository.GetAll().ToList();
        }
    }
}

如您所见,这是一个非常简单的课程。此类继承ServiceBase,如下所述:

public class ServiceBase
{
    [Inject]
    public IUnitOfWorkFactory UnitOfWorkFactory { get; set; }
}

此ServiceBase类仅包含使用Inject属性初始化的UnitOfWorkFactory。似乎注射没有按预期发生。

以下是UnitOfWorkFactory:

public class UnitOfWorkFactory : IUnitOfWorkFactory
{
    public IUnitOfWork Create()
    {
        var unitOfWork = new UnitOfWork();
        unitOfWork.SetupObjectContext();
        return unitOfWork;
    }
}

所以我在上面的Create类中放置了一个断点,并且永远不会到达这个断点。这是我的问题:UnitOfWork永远不会被初始化。我花了几个小时试图找出问题的原因而没有成功。

enter image description here

正如我在开头所说的那样,这段代码是另一个工作得很好的解决方案的副本/ pase。所以我检查了我的代码并没有发现差异。

感谢。


更新

这是IocContainer的初始化:

public class UnitOfWork : IUnitOfWork
{

    private ObjectContext _ObjectContext;
    private IocContainer _Container;
    public UnitOfWork()
    {
        _Container = new IocContainer();
    }
    public void SetupObjectContext()
    {            
        _ObjectContext = new ObjectContext();            
        _Container.BindToInstance<ObjectContext>(_ObjectContext);

    }

    public Repository<TRepository> Create<TRepository>() where TRepository : class
    {
        // As long as we registered created object context instance in child container
        // it will be available now to repositories during resolve            
        return new Repository<TRepository>(_ObjectContext);
    }

    public void Commit()
    {
        _ObjectContext.SaveChanges();
    }

    public void Dispose()
    {
        _ObjectContext.Dispose();
    }
}    

0 个答案:

没有答案