【发布时间】:2012-02-17 02:11:07
【问题描述】:
错误:
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"}
复制步骤:
创建新的 MVC3 应用程序
-
添加 Nuget 包EntityFramework.SqlServerCompact
<package id="EntityFramework.SqlServerCompact" version="4.1.8482.2" /> -
创建模型
public class TaskItem { [Key] public int Id { get; set; } public string Description { get; set; } } -
创建数据库上下文
public class TestContext : DbContext { public DbSet<TaskItem> TaskItems { get; set; } } -
家庭控制器
public ActionResult Index() { var db = new TestContext(); // breakpoint on Add() below db.TaskItems.Add(new TaskItem { Description = "Get shit done."}); return View(); } -
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 中删除 Dependent Assembly 部分解决了问题,但我仍然需要解释原因才能关闭答案。
【问题讨论】:
标签: c# sql entity-framework-4 assemblies sql-server-ce