gpt4 book ai didi

entity-framework - 将 Entity Framework 与 SQL Compact 私有(private)安装一起使用

转载 作者:行者123 更新时间:2023-12-03 12:01:42 26 4
gpt4 key购买 nike

我在带有 SQL Compact 的桌面应用程序中使用 Entity Framework 4。我想在我的应用程序中使用 SQL Compact 的私有(private)安装,这样我的安装程序就可以安装 SQL Compact,而无需让用户进行第二次安装。它还避免了版本控制的麻烦。

我的开发机器安装了 SQL Compact 3.5 SP1 作为公共(public)安装,所以我的应用程序在那里运行良好,正如人们所期望的那样。但它没有在我的测试机器上运行,它没有安装 SQL Compact。我收到此错误:

The specified store provider cannot be found in the configuration, or is not valid.

我知道有些人在使用 SQL Compact 私有(private)安装时遇到了困难,但是 I have used them for a while ,我真的很喜欢他们。不幸的是,我的常规私有(private)安装方法不起作用。我检查了我的 SQL CE 文件上的版本号,它们都是 3.8.8078.0,即 SP2 RC 版本。

以下是我在私有(private)安装中包含的文件:
  • sqlcecompact35.dll
  • sqlceer35EN.dll
  • sqlceme35.dll
  • sqlceqp35.dll
  • sqlcese35.dll
  • System.Data.SqlServerCe.dll
  • System.Data.SqlServerCe.Entity.dll

  • 我在我的项目中添加了对 System.Data.SqlServerCe 的引用,并且我已经验证上面列出的所有文件都被复制到安装机器上的应用程序文件夹中。

    这是我在打开 SQL Compact 文件时用来配置 EntityConnectionStringBuilder 的代码:
    var sqlCompactConnectionString = string.Format("Data Source={0}", filePath);

    // Set Builder properties
    builder.Metadata = string.Format("res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", edmName);
    builder.Provider = "System.Data.SqlServerCe.3.5";
    builder.ProviderConnectionString = sqlCompactConnectionString;
    var edmConnectionString = builder.ToString();

    我错过了一个文件吗?我是否缺少告诉 Entity Framework 在哪里可以找到我的 SQL Compact DLL 所需的配置步骤?为什么 EF 没有在安装机器上找到我的 SQL Compact DLL 的任何其他建议?谢谢你的帮助。

    最佳答案

    多亏了blog post by Steve Lasker,我想出了怎么做.基本上,这是你必须做的:

    (1) 设置对System.Data.SqlServerCe.dll的引用在你的项目中。设置CopyLocal属性为 True。

    (2) 在您项目的 App.config 中,添加以下 XML 标记。它告诉 EntityFramework 为它的数据提供者寻找你私有(private)安装的 SQL Compact:

    <system.data>
    <DbProviderFactories>
    <remove invariant="System.Data.SqlServerCe.3.5"/>
    <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
    </system.data>

    (3) 在Setup项目中,在File System Editor中的Application Folder中添加以下文件:
  • sqlcecompact35.dll
  • sqlceme35.dll
  • sqlcese35.dll
  • System.Data.SqlServerCe.Entity.dll
  • 关于entity-framework - 将 Entity Framework 与 SQL Compact 私有(private)安装一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2540784/

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