gpt4 book ai didi

asp.net-mvc-3 - 在带有 MVC 3 的远程主机上使用 SQL Server CE 4

转载 作者:行者123 更新时间:2023-12-03 09:17:34 28 4
gpt4 key购买 nike

我刚刚将我的主机升级到 MVC 3,但我正在尝试使用 SQLCE 4.0 做一个“hello world”,但我刚刚得到:

Sorry, an error occurred whileprocessing your request.


我看到了我的布局和所有内容,但我看到的不是数据。
在本地主机上按预期工作
我有:
<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>
作为连接字符串。
我把 sdf 作为项目的一部分,我添加了 System.Data.SqlServerCE.dll 到项目与本地副本为真。
我没有更多的想法了。 connString,dll 位于/bin 并在 localhost 中工作。
有任何想法吗?
谢谢。
编辑
我现在有一些日志:
没有/bin 上的“System.Data.SqlServerCE.dll”:

Unable to find the requested .Net Framework Data Provider. It may not be installed.

System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.


够好。他们没有 SqlServerCE4。
使用本地副本上的 Dll,AKA/bin:

Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8482. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.

Exception Details: System.Data.SqlServerCe.SqlCeException: Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8482. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.


KB 说我需要 x86 和 amd64 的 dll。我在某处读到,如果我将两个目录复制到/bin,例如:/bin/x86 和/bin/amd64 。我从 SqlServerCE 4 安装文件夹的私有(private)文件夹中复制了这些文件夹。现在我得到了:

Possible file version mismatch detected between ADO.NET Provider and native binaries of SQL Server Compact which could result in an incorrect functionality. This could be due to the presence of multiple instances of SQL Server Compact of different versions or due to wrong binaries with same name as SQL Server Compact binaries. Please install SQL Server Compact binaries of matching version.


行。在 SQLServerCE4 的根文件夹中,我也有一些 dll,因此我删除了这两个文件夹并将该 dll 复制到/bin:

Could not load file or assembly 'file:///C:\HostingSpaces\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll' or one of its dependencies. The module was expected to contain an assembly manifest.


我想我尝试了所有的事情。 Scottgu 说 SqlServerCE 4 无需安装即可在任何服务器上运行。

最佳答案

我不喜欢回答我自己的答案,但经过几个小时的工作,我有了答案!

我们需要:

NuGet(比从程序文件中复制 dll 更好)

使用 NuGet,我们安装:

EFCodeFirst

SqlServerCompact

EFCodeFirst.SqlServerCompact



问题是 EF 需要另一个用于 SQL CE 4 (System.Data.SqlServerCe.Entity.dll) 的 dll,我们需要在 web.config 上进行一些配置:
  <system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>

这样,一切正常。我已经看到了 5 个不同的错误,所以我们需要:

SQL CE 4 中的 2 dll、EF dll、web.config 中的配置和 native dll(来自 NuGet 下载库的包目录)。

似乎 web.config 配置指向 SQL CE .dll 的具体版本,而 RTM 包的版本不同。我找不到具体的版本,所以我使用 NuGet 的 .dll。

就是这样,远程主机上的 SQL CE 4 + EF。

关于asp.net-mvc-3 - 在带有 MVC 3 的远程主机上使用 SQL Server CE 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762857/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com