Lightswitch丢失了数据源连接数据提供程序

时间:2016-02-25 22:07:03

标签: odp.net lightswitch-2013

我从2013年的VS升级出现奇怪的情况> 2015年以外的运行时。

应用类型:MS Lightswitch HTML客户端 数据库类型:Oracle 框架:4.5

故事:我升级了VS并将OPD.Net替换为2015版。工作良好。 然后我转换了我的申请。有很多事情需要解决,但大多数都很容易解决。我测试了应用程序,它按预期工作,所以我发布到测试服务器,一切都检查出来。成功!所以我想。

我想继续开发该网站。当我进行数据库更改时,需要将它们与我项目中的内部数据库进行协调。

enter image description here

点击“更新数据库”后,我看到了这一点。到现在为止还挺好。 enter image description here

在我点击“完成”后,对所选表的所有更改都应该拉入lsml文件。但这就是我得到的。

enter image description here 我读过一些像The given key was not present in the dictionary, what key? [closed]这样的地方,但这些看起来都像运行时补救。

如果我回到更新屏幕并点击“上一步”,我就明白了。 enter image description here

我在文本编辑器中查找每个freakin lsml文件,查找提供程序的分配位置。没运气。我还创建了一个新的项目进行比较,没有什么突出的。我也试过添加另一个工作正常的数据源。所以ODP.net不是问题。我迷失在现在该做什么。我搜索了整个网站Google,查看了包含各种标签的每条错误消息。在这一点上,我联系你,或任何可能知道这是什么的人。

提前致谢!

1 个答案:

答案 0 :(得分:0)

注意将来的用户使用Oracle db升级VS LS项目。 由于需要新版本ODP.Net(在我的案例中为2015),提供商名称将会发生变化。为确保LS知道新提供程序,需要更新数据源lsml文件。就我而言,我使用GIT来帮忙。这就是我解决它的方法。

步骤: 转换项目并将ODP.net替换为当前版本后。

  1. 使用新提供商创建新数据源。
  2. 保存项目并重新打开。这将导致lightswitch重新编译。
  3. 打开文件资源管理器并导航到ProjectName.server文件夹。在文本编辑器(我使用记事本)中打开ProjectName.server下的lsml文件,如果有多个源,则应该有两个lsml文件(1个用于预先存在,另一个用于新文件)或更多文件。
  4. 将新数据源的连接属性复制到桌面上的新临时文件中。
  5. 使用GIT或其他源代码控制回滚整个解决方案。
  6. 使用文本编辑器打开原始数据源的lsml文件。
  7. 使用步骤4中临时文件中的值更新DataProviderName的GUID。
  8. 注意:连接字符串GUID应该保持不变,因为它应该与web.config文件中的GUID匹配。

         <DataService.ConnectionProperties>
          <ConnectionProperty
            Name="DataProviderName"
            Value="9d8fdbb9-xxxx-4787-xxxx-49831d34ad4b" />
          <ConnectionProperty
            Name="ProviderInvariantName"
            Value="Oracle.ManagedDataAccess.Client" />
          <ConnectionProperty
            Name="ConnectionStringGuid"
            Value="36e67aca-xxxx-41a7-xxxx-a4546761b30d" />
          <ConnectionProperty
            Name="ProviderManifestToken"
            Value="12.1" />
         </DataService.ConnectionProperties>
    
    1. 最后重新加载项目,更改应生效,允许您再次更新数据源。
    2. 由于