gpt4 book ai didi

c# - 将 SQL Server Compact 4.0.0.1 与 Entity Framework 4.3 结合使用

转载 作者:太空狗 更新时间:2023-10-29 23:01:46 24 4
gpt4 key购买 nike

错误:

Could not load System.Data.SqlServerCe.Entity.dll. Reinstall SQL Server Compact.

内部异常:

{"Could not load file or assembly 'System.Data.SqlServerCe.Entity, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"System.Data.SqlServerCe.Entity, Version=4.0.0.1, Culture=neutral, PublicKeyToken=89845dcd8080cc91"}

重现步骤:

  1. 创建新的 MVC3 应用程序

  2. 添加 Nuget 包 EntityFramework.SqlServerCompact

    <package id="EntityFramework.SqlServerCompact" version="4.1.8482.2" />

  3. 创建模型

    public class TaskItem
    {
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
    }
  4. 创建 DbContext

    public class TestContext : DbContext
    {
    public DbSet<TaskItem> TaskItems { get; set; }
    }
  5. 家庭 Controller

    public ActionResult Index()
    {
    var db = new TestContext();
    // breakpoint on Add() below
    db.TaskItems.Add(new TaskItem { Description = "Get shit done."});
    return View();
    }
  6. Web.config 连接字符串和运行时以及 System.Data

    <add name="ApplicationServices" connectionString="Data Source=|DataDirectory|Test.sdf" providerName="System.Data.SqlServerCe.4.0" />

    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
    </dependentAssembly>
    </assemblyBinding>
    </runtime>
    <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>

问题:

Web.config 都是默认的...这里没什么奇怪的...所有 DLL 都复制到本地和 bin 中...我错过了什么?它必须非常简单。


更新:

从 web.config 中删除依赖程序集部分解决了问题,但我仍然需要解释原因才能关闭答案。

最佳答案

从您的 web.config 中删除依赖程序集绑定(bind)

  <dependentAssembly>
<assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
</dependentAssembly>

关于c# - 将 SQL Server Compact 4.0.0.1 与 Entity Framework 4.3 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321990/

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