Lightswitch 丢失数据源连接的数据提供者

Lightswitch lost data provider for data source connection

我在运行时之外从 2013 > 2015 升级 VS 时遇到了一个奇怪的情况。

应用程序类型:MS Lightswitch HTML客户端 数据库类型:甲骨文 框架:4.5

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

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

点击后 'Update Database' 我看到了这个。到目前为止,一切都很好。

预期的是,在我点击 'Finish' 之后,对所选 table 的所有更改都应该引入 lsml 文件。但这就是我得到的。

我读过一些像 The given key was not present in the dictionary, what key? [closed] 这样的地方,但这些看起来都像是运行时修复。

如果我返回更新屏幕并点击 'Previous',我明白了。

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

提前致谢!

未来用户使用 Oracle 数据库升级 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。

注意:连接字符串 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. 最后重新加载项目,更改应该生效,允许您再次更新数据源。

谢谢