从上下文中调用服务层

时间:2017-03-15 07:02:13

标签: dependency-injection autofac dbcontext autofac-module

首先让我说,我可能会走错路,但无法理解如何让它发挥作用。

我想要实现的是在插入/更新/删除数据库条目后调用我的服务层,执行某些功能。

我最初的想法是将我的服务注入我的上下文,但不确定这是否可行,或者是否明智。

这是我注入服务“serviceBus”的上下文:

    public interface IPCContext
    { }
    public class PCContext : IdentityDbContext<User>, IPCContext
    {
        private readonly IClientBusServices _serviceBus;

        public PCContext(IClientBusServices serviceBus)
            : base("PayComplimentContext")
        {
            Database.SetInitializer(new MigrateDatabaseToLatestVersion<PCContext, Configuration>());
            _serviceBus = serviceBus;
        }

        public override int SaveChanges()
        {
            var count = base.SaveChanges();
            _serviceBus.SyncDw.Value.SyncDw(1, "Feedback", 1);
            return count;
        }
    }        

要注册“serviceBus”,我使用Autofac:

class ClientBusModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterAssemblyTypes(ThisAssembly)
            .Where(t => t.Name.EndsWith("Service"))
            .AsImplementedInterfaces();
        builder.RegisterAggregateService<IClientBusServices>();
        builder.RegisterType<ClientSearchIndexService>().As<IClientSearchIndexService>().InstancePerLifetimeScope();
        builder.RegisterType<ClientSyncDataWarehouseService>().As<IClientSyncDataWarehouseService>().InstancePerLifetimeScope();
    }
}

我在我的应用程序的其他部分使用依赖注入工作正常但不是在我的上下文中使用它时。我得到的错误是:

The target context 'PayCompliment.Data.DbContexts.PCContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory.

我接近这个错误的方式吗?任何想法或评论都非常感谢。

这是一个首先使用EF6代码的MVC网站。

0 个答案:

没有答案