0

我正在使用 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 = (from p in db.Products
第 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(IEnumerable 1 xmlReaders, IEnumerable1 sourceFilePaths) +189 System.Data.Metadata.Edm.StoreItemCollection.Init(IEnumerable 1 xmlReaders, IEnumerable1 filePaths, Boolean throwOnError, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerManifestToken, Memoizer 2& 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 workspace, DbConnection storeConnection, DbProviderFactory factory, DbConnectionOptions connectionOptions, EdmItemCollection edmItemCollection, MetadataArtifactLoader artifactLoader) +246 System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections) +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.ObjectQuery 1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +36 System.Linq.Enumerable.FirstOrDefault(IEnumerable1 源)+152 System.Data.Objects.ELinq.ObjectQueryProvider.b__1(IEnumerable 1 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


我究竟做错了什么?

4

1 回答 1

1

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

于 2013-10-07T16:35:00.503 回答