删除SQL CE依赖项 - 错误0152 - 无实体框架提供程序ADO.NET System.Data.SqlServerCe.4.0

时间:2018-01-17 07:07:00

标签: entity-framework ado.net sql-server-ce

我知道围绕此错误有很多主题,但我的团队现在的情况有点不同。

我们正在处理一个较旧的项目,并希望简化它。除此之外,新程序在技术上应该不再需要SQL CE。但是,目前它仍然需要安装SQL CE,我们正在尝试找出原因。

我们已经尝试从项目的所有子项目中删除所有依赖项和包,例如Microsoft.SqlServer.Compact和EntityFramework.SqlServerCompact,但是我们仍然在项目输出的网站的某些页面上收到以下错误:

2018-01-17 06:49:18,217 ERROR - Could not select provider.
2018-01-17 06:49:18,217 ERROR - An exception occurred while initializing the database. See the InnerException for details.
2018-01-17 06:49:18,219 DEBUG -    at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
   at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
   at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
   at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
   at System.Linq.Queryable.Select[TSource,TResult](IQueryable`1 source, Expression`1 selector)
   at FGCI.Database.EntityFramework.FGEntityTable`1.get_Provider()
2018-01-17 06:49:18,219 ERROR - Inner Exception:
2018-01-17 06:49:18,219 ERROR - Schema specified is not valid. Errors: 
(0,0) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlServerCe.4.0'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.
2018-01-17 06:49:18,219 DEBUG -    at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection.Loader.ThrowOnNonWarningErrors()
   at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection.Loader.LoadItems(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths)
   at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection.Loader..ctor(IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, Boolean throwOnError, IDbDependencyResolver resolver)
   at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection.Init(IEnumerable`1 xmlReaders, IEnumerable`1 filePaths, Boolean throwOnError, IDbDependencyResolver resolver, DbProviderManifest& providerManifest, DbProviderFactory& providerFactory, String& providerInvariantName, String& providerManifestToken, Memoizer`2& cachedCTypeFunction)
   at System.Data.Entity.Core.Metadata.Edm.StoreItemCollection..ctor(IEnumerable`1 xmlReaders)
   at System.Data.Entity.Utilities.XDocumentExtensions.GetStorageMappingItemCollection(XDocument model, DbProviderInfo& providerInfo)
   at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, Lazy`1 modificationCommandTreeGenerator, MigrationSqlGenerator migrationSqlGenerator, String sourceModelVersion, String targetModelVersion)
   at System.Data.Entity.Migrations.DbMigrator.IsModelOutOfDate(XDocument model, DbMigration lastMigration)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context)
   at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassa`1.<CreateInitializationAction>b__9()
   at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
2018-01-17 06:49:18,220 DEBUG - Out: Entity_Table'.get_Provider

无论如何,该程序不再需要SQLCE。然而,它看起来好像在某处仍然有一些SQL CE的引用,但我找不到它,而且我在这里结束了。

有没有人对我们如何解决这个问题有任何建议?再一次,我们的目标是找到并摆脱项目在SQL CE上的所有遗留依赖项。

更新:

我在项目中找到了以下EMX相关文件。我也无法在这里弄出任何可疑的东西,但也许我错过了什么。

-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005, 2008, 2012 and Azure
-- --------------------------------------------------
-- Date Created: 07/15/2015 19:11:12
-- Generated from EDMX file: C:\Users\██████\Source\Workspaces\██████\Main\██████\Implementation\Net\██████\MetaDataModel.edmx
-- --------------------------------------------------

SET QUOTED_IDENTIFIER OFF;
GO
USE [██████];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO

-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- --------------------------------------------------


-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------

IF OBJECT_ID(N'[dbo].[MetaData]', 'U') IS NOT NULL
    DROP TABLE [dbo].[MetaData];
GO

-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------

-- Creating table 'MetaData'
CREATE TABLE [dbo].[MetaData] (
    [IntegratorId] varchar(100)  NOT NULL,
    [Name] int  NOT NULL,
    [Count] int  NOT NULL,
    [Value] varchar(255)  NOT NULL
);
GO

-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------

-- Creating primary key on [IntegratorId], [Name], [Count] in table 'MetaData'
ALTER TABLE [dbo].[MetaData]
ADD CONSTRAINT [PK_MetaData]
    PRIMARY KEY CLUSTERED ([IntegratorId], [Name], [Count] ASC);
GO

-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------

-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------

1 个答案:

答案 0 :(得分:0)

您可能有一个包含SQLCE提供程序名称的EDMX文件,您需要为SQL Server重建该文件