【问题标题】:Getting error 0004: Could not load System.Data.SqlServerCe.Entity.dll. Reinstall SQL Server Compact出现错误 0004:无法加载 System.Data.SqlServerCe.Entity.dll。重新安装 SQL Server Compact
【发布时间】:2013-10-13 12:24:13
【问题描述】:

我正在使用 SQL Server CE 4.0 开发 ASP.NET 网页站点。

我相信我的 SQL Server CE 4.0 数据库运行良好。无论有没有实体框架,我都可以在我的开发机器上毫无问题地连接到它。

一旦我将站点推送到服务器,我可以在没有实体框架的情况下使用此连接字符串很好地连接到它:

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

我的实体框架连接字符串如下所示:

<add name="StarterSiteEntities" 
     connectionString="metadata=res://*/App_Code.ProductModel.csdl|res://*/App_Code.ProductModel.ssdl|res://*/App_Code.ProductModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;data source=|DataDirectory|\StarterSite.sdf&quot;" 
     providerName="System.Data.EntityClient" />

当我尝试进行任何 EF 数据库调用时,我会收到以下错误消息:

“/”应用程序中的服务器错误。

指定的架构无效。

错误:
App_Code.ProductModel.ssdl(2,88):错误 0004:无法加载 System.Data.SqlServerCe.Entity.dll。重新安装 SQL Server Compact。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.MetadataException:指定的架构无效。

错误:
App_Code.ProductModel.ssdl(2,88):错误 0004:无法加载 System.Data.SqlServerCe.Entity.dll。重新安装 SQL Server Compact。

来源错误:

第 23 行:使用 (var db = new StarterSiteEntities())
第 24 行:{
第 25 行:product =(来自 db.Products 中的 p
第 26 行:其中 p.ProductID == productId
第 27 行:选择 p).FirstOrDefault();

源文件:c:\sites\www.foosite.org\Admin-RUF\Admin-Product-Edit.cshtml 行:25

堆栈跟踪:

[MetadataException:指定的架构无效。错误: App_Code.ProductModel.ssdl(2,88):错误 0004:无法加载 System.Data.SqlServerCe.Entity.dll。重新安装 SQL Server Compact。 ] System.Data.Metadata.Edm.Loader.ThrowOnNonWarningErrors() +8610213 System.Data.Metadata.Edm.Loader.LoadItems(IEnumerable1 xmlReaders, IEnumerable1 sourceFilePaths) +189 System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable1 xmlReaders, IEnumerable1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer2& cachedCTypeFunction) +182 System.Data.Metadata.Edm.StoreItemCollection..ctor(IEnumerable1 xmlReaders, IEnumerable1 filePaths) +244 System.Data.Metadata.Edm.StoreMetadataEntry.LoadStoreCollection(EdmItemCollection edmItemCollection, MetadataArtifactLoader loader) +90 System.Data.Metadata.Edm.StoreItemCollectionLoader.LoadItemCollection(StoreMetadataEntry entry) +16 System.Data.Metadata.Edm.MetadataCache.LoadItemCollection(IItemCollectionLoader1 itemCollectionLoader, T entry) +163 System.Data.Metadata.Edm.MetadataCache.GetOrCreateStoreAndMappingItemCollections(String cacheKey, MetadataArtifactLoader loader, EdmItemCollection edmItemCollection, Object& entryToken) +191 System.Data.EntityClient.EntityConnection.LoadStoreItemCollections(MetadataWorkspace 工作区,DbConnection storeConnection,DbProviderFactory 工厂,DbConnectionOptions connectionOptions,EdmItemCollection edmItemCollection,MetadataArtifactLoader artifactLoader)+246 System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(布尔初始化所有集合)+586 System.Data.EntityClient.EntityConnection.InitializeMetadata(DbConnection newConnection, DbConnection originalConnection, Boolean closeOriginalConnectionOnFailure) +75 System.Data.EntityClient.EntityConnection.Open() +150 System.Data.Objects.ObjectContext.EnsureConnection() +75 System.Data.Objects.ObjectQuery1.GetResults(Nullable1 forMergeOption) +41 System.Data.Objects.ObjectQuery1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +36 System.Linq.Enumerable.FirstOrDefault(IEnumerable1 来源)+152 System.Data.Objects.ELinq.ObjectQueryProvider.b__1(IEnumerable1 sequence) +41 System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable1 查询,表达式 queryRoot)+59 System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(表达式表达式)+133 System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(表达式表达式)+87 System.Linq.Queryable.FirstOrDefault(IQueryable1 source) +251 ASP._Page_admin_ruf_Admin_Product_Edit_cshtml.Execute() in c:\sites\www.foosite.org\Admin-RUF\Admin-Product-Edit.cshtml:25 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +198 System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable1 执行者) +69 System.Web.WebPages.WebPage.ExecutePageHierarchy() +131 System.Web.WebPages.StartPage.RunPage() +17 System.Web.WebPages.StartPage.ExecutePageHierarchy() +64 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +78 System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext) +116

版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.18044


我做错了什么?

【问题讨论】:

  • 尝试转到 VS 的 SQL 选项卡并复制和粘贴连接字符串。
  • 使用您的应用部署 System.Data.SqlServerCe.Entity.dll
  • @ErikEJ 谢谢回复。我在哪里可以找到 System.Data.SqlServerCe.Entity.dll 来部署它?它不在我的 bin 文件夹中。
  • 它在我的电脑上的 C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.Entity 中
  • @ErikEJ 这解决了问题。谢谢!!!

标签: c# entity-framework sql-server-ce asp.net-webpages


【解决方案1】:

使用您的应用程序部署 System.Data.SqlServerCe.Entity.dll,它位于我的 C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.Entity 中个人电脑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多