将SignalR与数据层应用程序框架(DACFx)配合使用:如何配置和控制数据库更改

时间:2016-02-02 15:24:25

标签: asp.net sql-server signalr dac data-tier-applications

我正在尝试为使用SignalR的现有数据库和Web应用程序开发可行的CI /部署过程。应用程序体系结构非常复杂,有多个组件正在监视数据库的更改。

我希望能够使用数据层应用程序框架(DACFx)来部署DACPAC文件,并使用注册过程来检测对数据库模式的进程外更改。目前,因为SignalR修改了数据库,所以这是不可能的。

我正在尝试确定是否可以成功将SignalR与数据层应用程序一起使用,必须手动将SignalR表添加到架构中。

我在的每个组件中的Startup.cs中使用类似于以下内容的SignalR 代码:

[assembly: OwinStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var connectionStringName = ConfigurationManager.AppSettings["SignalR.DatabaseInstanceName"] ?? "MyApp";
            var connectionstring = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;

            var sqlScaleOutConfiguration = new SqlScaleoutConfiguration(connectionstring);
            GlobalHost.DependencyResolver.UseSqlServer(sqlScaleOutConfiguration);

            app.MapSignalR();
        }
    }
}

在我的Web.config或app.config中,我有一个“SignalR”连接字符串,指向与主应用程序不同的数据库。例如。应用数据的“MyApp”和SignalR数据的“SignalR”。

我的理解是,当以这种方式配置SignalR时,它将创建:

  1. 用于跟踪连接的数据库表。
  2. 对数据库和相关清理SP的服务订阅。
  3. 我遇到的问题是我的主应用程序数据库中正在创建数据库表,而且SignalR似乎没有提供用于取消注册服务的API。

    我是否做到了这一点 - SignalR是否正在创建服务订阅,还是其他什么?

    发生了什么 - 为什么我的配置会被忽略?

    是否可以优雅地清理它?或者我是否需要在部署期间手动删除服务订阅?

0 个答案:

没有答案