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 替换为当前版本后。
- 使用新提供程序创建新数据源。
- 保存项目并重新打开。这将导致 lightswitch 重新编译。
- 打开文件资源管理器并导航到 ProjectName.server 文件夹。在文本编辑器(我使用记事本)中打开 ProjectName.server 下的 lsml 文件,如果您有多个来源,应该有两个 lsml 文件(1 个用于现有文件,另一个用于新文件)或更多。
- 将新数据源的连接属性复制到桌面上的新临时文件。
- 使用 GIT 或其他源代码控制回滚整个解决方案。
- 使用文本编辑器打开原始数据源的 lsml 文件。
- 使用步骤 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>
- 最后重新加载项目,更改应该生效,允许您再次更新数据源。
谢谢
我在运行时之外从 2013 > 2015 升级 VS 时遇到了一个奇怪的情况。
应用程序类型:MS Lightswitch HTML客户端 数据库类型:甲骨文 框架:4.5
故事:我升级了 VS 并将 OPD.Net 替换为 2015 版本。工作正常。 然后我转换了我的应用程序。有很多事情要解决,但大多数都很容易解决。我测试了该应用程序并且它按预期工作,所以我发布到测试服务器并检查了所有内容。成功!所以我想。
我想继续开发网站。当我对数据库进行更改时,需要将它们与我项目中的固有数据库进行协调。
点击后 'Update Database' 我看到了这个。到目前为止,一切都很好。
预期的是,在我点击 'Finish' 之后,对所选 table 的所有更改都应该引入 lsml 文件。但这就是我得到的。
如果我返回更新屏幕并点击 'Previous',我明白了。
我在文本编辑器中筛选了每个奇怪的 lsml 文件,寻找提供程序的分配位置。没有运气。我还创建了一个新项目进行比较,没有什么突出的。我还尝试添加另一个工作正常的数据源。所以 ODP.net 不是问题。我不知道现在该做什么。我在整个站点 Google 上搜索了所有带有各种标签的错误消息。在这一点上,我联系了你,或者任何可能知道这是关于什么的人。
提前致谢!
未来用户使用 Oracle 数据库升级 VS LS 项目的注意事项。 由于需要新版本 ODP.Net(在我的例子中是 2015 年),提供商名称将发生变化。为确保 LS 知道新的提供者,需要更新数据源 lsml 文件。就我而言,我使用 GIT 来提供帮助。我就是这样解决的。
步骤: 转换项目并将 ODP.net 替换为当前版本后。
- 使用新提供程序创建新数据源。
- 保存项目并重新打开。这将导致 lightswitch 重新编译。
- 打开文件资源管理器并导航到 ProjectName.server 文件夹。在文本编辑器(我使用记事本)中打开 ProjectName.server 下的 lsml 文件,如果您有多个来源,应该有两个 lsml 文件(1 个用于现有文件,另一个用于新文件)或更多。
- 将新数据源的连接属性复制到桌面上的新临时文件。
- 使用 GIT 或其他源代码控制回滚整个解决方案。
- 使用文本编辑器打开原始数据源的 lsml 文件。
- 使用步骤 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>
- 最后重新加载项目,更改应该生效,允许您再次更新数据源。
谢谢