【问题标题】:Using Ncqrs fail when I tried to save second field当我尝试保存第二个字段时使用 Ncqrs 失败
【发布时间】:2010-10-14 18:04:24
【问题描述】:

这是错误:前提条件失败。: !IsConfigured 已配置环境时无法配置环境。

public static void BootUp()
    {
        var config = new StructureMapConfiguration((i) =>
        {
            i.For<ICommandService>().Use(InitializeCommandService());
            i.For<IEventStore>().Use(InitializeEventStore());
            i.For<IEventBus>().Use(InitializeEventBus());
        });

        NcqrsEnvironment.Configure(config);
    }

我在尝试添加新数据时遇到问题,它只允许我创建一个客户,但如果我尝试添加第二个客户,它会失败:

NcqrsEnvironment.Configure(config);

我正在使用 Ncqrs。

【问题讨论】:

    标签: .net sql-server c#-4.0


    【解决方案1】:
     if (!NcqrsEnvironment.IsConfigured)
                    NcqrsEnvironment.Configure(config);
    

    您应该添加该行以检查它是否已配置,如果尚未配置,则应配置它。

    【讨论】:

      【解决方案2】:

      你是如何调用 BootUp() 方法的?

      NCQRS 网站上的文档示例已从静态构造函数调用 BootUp(),该构造函数保证仅被调用一次。

      但是,如果您不是从静态构造函数调用 BootUp(),请注意“IsConfigured”值不是线程安全的,如果两个或多个线程尝试在并行,这很可能在生产环境中。

      要么实现线程安全检查,要么从静态构造器运行它以确保安全。

      【讨论】:

        【解决方案3】:

        您也可以使用Ncqrs.Environment.DeConfigure() 方法。对于在 Nancy 下运行的 Web 应用程序,这是我必须做的事情,因为 Nancy 当前为几乎每个请求创建了一个新的 IoC 容器。

        如果我只是检查 IsConfigured,它将有两个独立的配置,它们彼此一无所知。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-08
          • 2016-07-17
          • 2013-07-20
          • 1970-01-01
          • 2011-07-08
          • 1970-01-01
          • 2012-05-25
          • 1970-01-01
          相关资源
          最近更新 更多