c# – Web Deploy添加额外的连接字符串(两次添加相同的连接)
首先,让研究取消.我已经在这里看到并应用了这个问题的答案:
Web Deploy / Publish is adding a unknown connection string?
它不起作用,我的意思是,它对我面临的问题没有任何影响. 另一条可能有用的信息是我正在使用Visual Studio 2015 Enterprise. 好吧,现在我面临的问题是一个奇怪的问题.我的web.config文件中有两个数据库连接.它们的定义如下: <add name="DefaultConnection" connectionString="Data Source=(LocalDb)v11.0;AttachDbFilename=|DataDirectory|Test.mdf;Initial Catalog=Test;Integrated Security=True" providerName="System.Data.SqlClient" /> <add name="ErpConnection" connectionString="Data Source=(LocalDb)v11.0;AttachDbFilename=|DataDirectory|Test.mdf;Initial Catalog=Test;Integrated Security=True" providerName="System.Data.SqlClient" /> 与DefaultConnection关联的上下文是ApplicationDbContext.与ErpConnection相关联的上下文是ErpEntityContext.其中每个定义如下: public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("name=DefaultConnection") { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } } 和: public class ErpEntityContext : DbContext { public ErpEntityContext() : base("ErpConnection") { } } 但是,Web部署决定ApplicationDbContext和DefaultConnection必须是两个非常不同的东西,所以最终将它们显示为两个不同的连接,如下图所示: 从web.config中删除DefaultConnection可以摆脱双重条目(这显然不是解决方案,因为我希望连接字符串).更改连接字符串的名称根本不重要. ErpConnection也不会发生这种情况. 这发生在Visual Studio的一个会话到另一个会话中,昨天突然出现了.几个小时后,当我重新启动VS时,它会自动消失.我认为这是固定的,一切都是花花公子,但今天又重新出现了.我完全迷失了这里可能出现的问题.尽管我对解决方案感兴趣,但如果有人能告诉我为什么会这样,我也会感激不尽. 编辑: 为了澄清和回答评论中提出的问题,我没有指定任何转换,并且问题出现在所有构建配置中. 另外,我尝试使用删除目的地中的删除其他文件来检查和取消选中.同样,我试图发布App_Data文件夹中的Exclude文件选中并取消选中,以查看我是否可以欺骗(:)).但到目前为止无济于事. 更新: 对该问题的进一步调查表明,罪魁祸首可能是在DbConfiguration中使用Loaded事件: Loaded += (sender,args) => args.ReplaceService<DbProviderServices>((s,_) => new CachingProviderServices(s,transactionHelper,new ExampleCachingPolicy())); 此活动的文档说:
问题是如果需要使用此事件,修复将是什么.如果我找到答案,我会写一个答案,但如果有其他人知道,请随意这样做. 解决方法
经过长时间的研究和实验,我终于找到了摆脱双重条目的方法:给你的connectionString与你的Context同名!
因此,要回答这个问题,将连接字符串DefaultConnection重命名为ApplicationDbContext应删除double条目.请注意,您还需要使用新的连接字符串名称更新以下内容: public ApplicationDbContext() : base("name=ApplicationDbContext") 可悲的是,我决定保留它(使用双条目),因为它使我可以使用Execute Code First迁移(在应用程序启动时运行)或更新数据库来更新数据库. 使用Update数据库的优点是可以在Schema更新之前和之后运行自定义SQL脚本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |