Не вдалося завантажити тип постачальника послуг Entity Framework?


420

Я намагаюся запустити свої тести на TeamCity, який зараз встановлений на моїй машині.

System.InvalidOperationException:

Тип постачальника Entity Framework ' System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'для' System.Data.SqlClient'постачальника ADO.NET не вдалося завантажити. Переконайтесь, що збірка постачальника доступна для запущеної програми.

Див. Http://go.microsoft.com/fwlink/?LinkId=260882 для отримання додаткової інформації.

Я не маю жодного посилання на System.Data.Entityжоден із моїх проектів, як було запропоновано в кодеплексі для оновлення до EF6.

Отже, я не впевнений, чому я отримую цей виняток. Я не отримую жодного такого винятку, коли запускаю тести від VS.

Я намагався встановити CopyLocal на false, а потім знову на true .. але, схоже, це також не працює.

Оновлення

Мій app.config має таке. Це викликає певну поведінку, яку я не розумію?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

Я отримую наступний стек-трек у спільній роботі.

[MSTest] IntegrationTests.CrudTest+QuestionTest.Create
[03:59:11][IntegrationTests.CrudTest+QuestionTest.Create] Initialization method IntegrationTests.CrudTest+QuestionTest.Initialize threw exception. System.InvalidOperationException: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. Make sure the provider assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information..
[03:59:11]
[IntegrationTests.CrudTest+QuestionTest.Create]     at System.Data.Entity.Config.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName)
   at System.Data.Entity.Config.ProviderServicesFactory.GetInstanceByConvention(String providerInvariantName)
   at System.Data.Entity.Config.DefaultProviderServicesResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.CachingDependencyResolver.<>c__DisplayClass1.<GetService>b__0(Tuple`2 k)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at System.Data.Entity.Config.CachingDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.RootDependencyResolver.GetService(Type type, Object key)
   at System.Data.Entity.Config.ResolverChain.<>c__DisplayClass3.<GetService>b__0(IDbDependencyResolver r)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at System.Data.Entity.Config.ResolverChain.GetService(Type type, Object key)
   at System.Data.Entity.Config.CompositeResolver`2.GetService(Type type, Object key)
   at System.Data.Entity.Config.IDbDependencyResolverExtensions.GetService[T](IDbDependencyResolver resolver, Object key)
   at System.Data.Entity.Config.InternalConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Config.DbConfiguration.GetService[TService](Object key)
   at System.Data.Entity.Utilities.DbProviderFactoryExtensions.GetProviderServices(DbProviderFactory factory)
   at System.Data.Entity.Infrastructure.DefaultManifestTokenService.GetProviderManifestToken(DbConnection connection)
   at System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
   at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   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.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
   at System.Data.Entity.DbSet`1.Add(TEntity entity)
   at EFRepository.Infrastructure.EFRepository`1.Add(T item) in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\Repository\Infrastructure\EFRepository.cs:line 22
   at IntegrationTests.CrudTest.Initialize() in c:\TeamCity\buildAgent\work\da2ea4e72c0e77f0\IntegrationTests\CrudTest.cs:line 34

1
Чи EntityFramework.SqlServer.dll розгорнутий разом з EntityFramework.dll? У EF6 постачальники SqlServer і SqlServerCE не в такій же збірці, як двигун EF, як це було в попередніх версіях. Не слід додавати посилання на System.Data.Entity.dll. Модель постачальника в EF6 змінилася порівняно з EF5 і постачальник EF5 просто не працюватиме. Крім того, ви можете зіткнутися з декількома складними проблемами (наприклад, геопросторові типи EF5, які розглядаються як типи сутностей у EF6)
Pawel

Так, я двічі перевірив, що немає посилань на System.Data.Entity та посилання на EntityFramework.dll та EntityFramework.SqlServer.dll є. Знову компіляція проектів і тести виконуються в VS. Лише коли я тести запускаються на TeamCity, помилка з’являється.
ашутош раїна

Це правильна установка. Я не використовував TeamCity, але мені здається, що коли ваш додаток розгорнуто для запуску тестів з TeamCity, відсутня EntityFramework.SqlServer.dll, і, отже, виняток.
Pawel

1
дивіться відповідь з цього допису: stackoverflow.com/questions/21175713/… Я додав private volatile Type _dependency...відповідь, і вона спрацювала! Це просто смердить, що я повинен додати окремий клас, як цей, просто щоб змусити EF працювати в TeamCity.
a11smiles

2
Я видалив EntityFramework з пакунків nuget і знову встановив, і все виправлено
abhyudayasrinet

Відповіді:


426

Та ж проблема, але я встановив EF 6 через Nuget. EntityFramework.SqlServer відсутній для іншого виконуваного файлу. Я просто додав пакет нута до цього проекту.


108
Я теж це помітив. Якщо ви створите бібліотеку, яка використовує EF, VS помістить EF.dll і EF.SqlServer.dll в папку збірки. Але якщо у вас зараз є інша програма, яка використовує вашу бібліотеку, в цю папку збірки буде розміщено лише EF.dll. Файл EF.SqlServer.dll відсутній. Якщо додати її вручну до папки збірки, програма працює. Сама по собі не є гарним рішенням, але показує, що проблема EF.SQLServer.dll відсутня - причина помилки.
Ерік

44
Я додав var x = typeof (System.Data.Entity.SqlServer.SqlProviderServices); Тоді мій додаток працював
Брайан

33
Я завжди хвилююся, коли вводжу код, який нічого не робить, і раптом мій проект запускається. O_o
Йорданія

10
Крім того, через оптимізацію компілятора, можливо, ви також хочете зробити x.ToString()це, інакше це буде виводити typeofs у Release.
Йорданія

15
Мені прикро, що EF 6.1 тепер потребує EF, встановленого на моєму DLL-програмі ASPX, тоді як EF 5.0 потрібен лише для мого DLL-проекту на рівні даних.
PeterX

274

У мене були ті ж проблеми в моїх тестових проектах - я встановлював останні біти EF6 через NuGet, і кожен раз, коли я викликав щось, що стосується EF, я отримав:

Провайдера Entity Framework типу "System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" для "System.Data.SqlClient" постачальника ADO.NET неможливо завантажити. Переконайтесь, що збірка постачальника доступна для запущеної програми. Для отримання додаткової інформації див. Http://go.microsoft.com/fwlink/?LinkId=260882 .

Моє вирішення: я розмістив цей метод у своєму тестовому проекті:

public void FixEfProviderServicesProblem()
{
//The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer'
//for the 'System.Data.SqlClient' ADO.NET provider could not be loaded. 
//Make sure the provider assembly is available to the running application. 
//See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}

Цей метод ніколи не називався, але я думаю, що компілятор видалить усі "непотрібні" збірки і без використання EntityFramework.SqlServer тесту не вдасться.

У будь-якому разі: працює на моїй машині;)

Примітка. Замість того, щоб додавати метод до тестового проекту, ви можете забезпечити статичну посилання на SqlProviderServices з вашого проекту модель / об'єкт .


24
Я в кінцевому підсумку робив те саме. Я хотів би поговорити з тією людиною, яка зробила цю збірку залежною від відкриття зв'язку до db. У їхньому альтернативному всесвіті всі наші проекти фронтенду, які мають конфігураційний файл із рядком з'єднання, повинні посилатися на EntityFramework лише для того, щоб отримати цей єдиний dll для відкриття з'єднання. У чому це має сенс, я не розумію.
juhan_h

3
Це злом, але це найкраще / найпростіше рішення, яке я знайшов для сценарію, в якому у вас немає пакету розгортання для вашого проекту.
Кон

3
Для всіх, хто використовує інші пропозиції, такі як "var x = typeof (SqlProviderServices);". Тільки це рішення, яке надає Роберт, працює над розробкою та побудовою машин !!!
Олександр Шмідт

3
Дякую Роберту, це смішно командою EF, але все одно, що працює на мене.
Hitesh

7
Щоб було зрозуміло: додавання вищевказаного коду до вашого DbContextкласу вирішить проблему в EF 6.1. Таким чином, вам не потрібно включати пакет Entity Framework Nuget у свій проект front-end (WebApi тощо), і ви можете залишити все, що стосується EF, у вашому рівні даних.
Нік

106

Nuget налаштує ваш проект EF6 на посилання EntityFramework.SqlServer.dll. Це розгортається у папці виводу для проекту EF6 під час збирання, але не буде розгорнуто до папки виводу для проектів, що посилаються на ваш проект EF6. Я вважаю, що це тому, що Visual Studio досить "розумний", щоб виявити, що нічого у вашій збірці насправді не використовується dll безпосередньо, і тому він не включає його. Ви можете змусити EntityFramework.SqlServer.dll розгортатися у вихідну папку проектів, що посилаються на ваш проект EF6 (тести одиниць, інтерфейс користувача тощо), додавши код до проекту EF6, який використовує EntityFramework.SqlServer.dll. Будьте обережні, щоб не ставити код у створений клас, оскільки ви ризикуєте втратити його при наступному реґенті. Я вирішив додати наступний клас до складання, який вирішив проблему.

using System.Data.Entity.SqlServer;

internal static class MissingDllHack
{
    // Must reference a type in EntityFramework.SqlServer.dll so that this dll will be
    // included in the output folder of referencing projects without requiring a direct 
    // dependency on Entity Framework. See http://stackoverflow.com/a/22315164/1141360.
    private static SqlProviderServices instance = SqlProviderServices.Instance;
}

1
Це вирішило для мене питання щодо MSTest. Мені подобається цей метод, тому що він не вимагає, щоб я робив щось безладне з успадкуванням класів на своїх тестових класах. Просто включіть клас десь до тестової збірки та MAGIC. Дякую!
kbrimington

Саме це є причиною того, що він не копіює sqlserver.dll у вихідний проект посилань. Це відбувається, коли у вас є ще один шар між виконанням програми та збіркою контексту. Спасибі це вирішило моє питання.
Бхарат

2
Для тих, хто не хоче витратити на це 4 секунди: використовуючи System.Data.Entity.SqlServer;
TTT

Ми використовуємо загальний базовий клас для одиничних тестів, усі одиничні тести успадковуються від цього класу. Додавання цього методу до цього класу означає, що всі проекти з одиничним тестовим класом, що успадковуються від базового класу, працюють ОК.
MaxJ

3
Невелике значення, але, мабуть, найкраще додати коментар до цього класу, щоб пояснити, чому це потрібно.
Джон Дарвілл

43

Моє рішення полягало в тому, щоб вилучити структуру сутності з проекту за допомогою менеджера інструментів і додати його ще раз.


9
PM> Update-Package -Reinstall "EntityFramework" -ProjectName "MyProj1"
ВахідN

Це вийшло для мене, і я думаю, що це може бути оптимальне рішення
ccoutinho

Просте, чисте рішення, яке працює. Повинен бути набагато вищим у списку
mode777

29

Я вирішив це, додавши використовувальну позицію поверх мого класу DBContext, наприклад:

using SqlProviderServices= System.Data.Entity.SqlServer.SqlProviderServices;

1
Це найчистіше рішення цієї проблеми. Дякую.
Олександру Діку

Це рішення працює і виглядає чисто. Питання: ми не втрачаємо ідентифікатор рядка, що клас DBContext оновлений? тобто використання покоління класу edmx?
NoloMokgosi

Не можу повірити, що це було потрібно, і Microsoft якось не виправив, але це працювало для мене. Дякую за просте рішення.
Цар Бомба

Це рішення функціонально те саме, що і MissingDllHack . Це може здатися більш чистим, але вводить обхідний код у ваш контекстний клас. Цей код також буде позначений для видалення інструментами, такими як ReSharper, і його можна з часом легко втратити. Гарне рішення, але я вважаю за краще тримати вирішення окремо від контексту таким чином, щоб не створювати попередження про код.
Тімоті Шкуновер

20

Я використовував реєстрацію на основі коду для провайдера. link1 link2

Щойно створений клас конфігурації, як

class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        this.SetDatabaseInitializer(new DropCreateDatabaseAlways<MyDbContext>());
        this.SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}

Ключовий момент - це.SetProviderServices (SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);

і використовував його таким чином

[DbConfigurationType(typeof(DbContextConfiguration))]
public class MyDbContext : DbContext
{
    public MyDbContext()
    {
        ...
    }

    public DbSet<...> ...{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        ...
    }
}

У мене два проекти в одному рішенні. Перша - це бібліотека класів із збіркою фреймворку сутності, класом DbContext та tt-файлами. Другий проект - це форми Windows, які повинні отримувати дані за допомогою ef-проекту. @Nash: Не могли б ви детальніше розібратися, де (в який проект) ви розмістили свій клас DbContextConfiguration? Спасибі
surfmuggle

Як було сказано вище, схоже, що додаткові посилання є одним із способів виправити це (див. Коментар із eric). Я використав нульову консоль і запустив цю команду: Get-Project MyWinformsProject | Install-Package EntityFrameworkяка зафіксувала мене. Ще я хотів би краще зрозуміти причину.
surfmuggle

Здається, що DbContextConfiguration вже присутній (порівняно з 2013 роком), додавання лінії DbConfiguraton над моїм класом MyDbContext не вирішило для мене проблеми.
Андерс Лінден

Вам не потрібен клас DbConfiguration . Вставте цей код при запуску програми (перед використанням EF): DbConfiguration.Loaded += (sender, e) => e.ReplaceService<DbProviderServices>((s, k) => System.Data.Entity.SqlServer.SqlProviderServices.Instance);.
Rosberg Linhares

14

Я розібрав це з [DeploymentItem] на моєму класі ініціалізації збірки

namespace MyTests
{
    /// <summary>
    /// Summary description for AssemblyTestInit
    /// </summary>
    [TestClass]
    [DeploymentItem("EntityFramework.SqlServer.dll")]
    public class AssemblyTestInit
    {
        public AssemblyTestInit()
        {
        }

        private TestContext testContextInstance;

        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        [AssemblyInitialize()]
        public static void DbContextInitialize(TestContext testContext)
        {
            Database.SetInitializer<TestContext>(new TestContextInitializer());
        }
    }
}

9

Пізно до партії, але відповіді, які проголосували зверху, всі здавалися мені хакерами.

Все, що я зробив, було видалити наступне з мого app.config у тестовому проекті. Працювали.

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

Справжнє рішення!
Бен Ф

8

У мене проблема, тому що я не додаю посилання на EntityFramework.sqlServer.dll. Коли я розробляю програму, вона працює. Але коли я публікую програму та встановлюю її, вона видає помилку.

Я просто додаю посилання та будую та публікую знову.

Список літератури


Я це і зробив. В основному проект покаже попередження, коли компоненти до бібліотек, де не надсилаються належним чином.
kbvishnu

5

Я вирішив це, вручну скопіювавши EntityFramework.SqlServer.dllфайл до bin folderосновної програми.


4

Я нарешті це вирішив. Виявляється, у мене в класі репозиторію була помилкова реалізація IDIsposable. Я це зафіксував. Помилкова реалізація спричинила виняток stackoverflow, оскільки я неправильно розпоряджався ресурсами. Це призвело до того, що VS не запускав тести, і двигун виконання тесту вийшов з ладу.

Я подав його в Microsoft тут (це було до того, як я отримав правильне рішення). connect.microsoft.com/VisualStudio/feedback/details/775868/vs-test-execution-crashes-in-vs-2012#details

У будь-якому разі, збірки зараз працюють добре на команді. Хоча мені все ще цікаво, чому жоден механізм виконання VS Test не мав витонченого способу розповісти мені, що відбувається не Team City.

Я виявив першопричину, вручну налагодивши тест (який я зрозумів лише через стільки днів, виправлення зайняло у мене 5 секунд).

Сподіваємось, це допоможе тому, хто стикається з такими проблемами.


4

Я бачу подібну проблему і за допомогою методу з цієї публікації: ( http://entityframework.codeplex.com/workitem/1590 ), який вирішує мою проблему.

Щоб вирішити проблему, ви можете змусити тестову збірку безпосередньо посилатись на збірку постачальника, додавши такий рядок, як у будь-якому місці тестової збірки: var _ = System.Data.Entity.SqlServer.SqlProviderServices.Instance;


3

Коли я ознайомився з проблемою, я помітив, що у папці виведення відсутні наступні dll. Просте рішення - скопіювати Entityframework.dll та Entityframework.sqlserver.dll разом з app.config у папку виводу, якщо програма перебуває в режимі налагодження. У той же час зміни параметр збірки параметра "Копіювати у вихідну папку" app.config для копіювання завжди. Це вирішить вашу проблему.


2
Я встановив "Копіювати локальне" істинно лише для "EntityFramework.SqlServer". Зараз це працює.
Алезіс

3

Просто посилайтеся або переглядайте dll EF - EntityFramework.SqlServer.dll


Це я і зробив. Скопіював посилання на "EntityFramework.SqlServer" з моєї бібліотеки до "запущеного" проекту. Це спрацювало!
Håkon K. Olafsen

3

У мене було те саме, що я намагався багато разів, але він не вирішився, але коли я встановив пакет EntityFramework.SqlServerCompact, він вирішив встановити цей пакет від Nuget Manager Manager.

Install-Package EntityFramework.SqlServerCompact

3

Я створив статичний файл "запуску" і додав код, щоб змусити копіювати DLL в папку bin в ньому як спосіб відокремити цю "конфігурацію".


[DbConfigurationType(typeof(DbContextConfiguration))] public static class Startup { }

public class DbContextConfiguration : DbConfiguration
{
    public DbContextConfiguration()
    {
        // This is needed to force the EntityFramework.SqlServer DLL to be copied to the bin folder
        SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
    }
}


1
Дякую! Це була величезна допомога.
Аддісон Шухардт

1
Радий, що ти вважаєш мою відповідь корисною @AddisonSchuhardt :)
hatsrumandcode

2

Я не хотів посилання на EF у своєму проекті (або вручну копіювати що-небудь), тому я додав це до подій після складання мого проекту EF:

cp $(TargetDir)EntityFramework.SqlServer.dll $(SolutionDir){your-main-bin-folder}

2

Це відбувається лише в межах моїх тестових проектів. Розчарувавшись, у мене так було, якщо це було в проекті, яку я веду 2 роки. Повинен був бути якийсь порядок тестового запуску, який порушує речі. Я здогадуюсь одного разу, що цей файл видаляється.

Я виявив, що просто оголошення змінної, яка використовує правильне значення, виправляє проблему ... Я навіть ніколи не називаю метод. Просто визначте це. Як не дивно, але це працює.

    /// <summary>
    /// So that the test runner copies dlls not directly referenced by the integration project
    /// </summary>
    private void referenceLibs()
    {
        var useless = SqlProviderServices.Instance;
    }

2

Спробувавши всі інші запропоновані рішення та не змусивши мій проект працювати, я нарешті знайшов невеликий коментар на цій сторінці :

Видалення BIN-папки зробило це для мене

І це працювало і для мене.


1
Я об'єднував 2 гілки - у моєму проекті не було змін, пов'язаних з EF, але мої тести просто почали провалюватися без причини. Якщо видалити папку BIN, вони знову працюватимуть.
Арно Петерс

@ Zeek2 ця помилка є хитрою. На сторінці, яку я цитував, існує багато різних пропозицій щодо вирішення цього питання. Це лише одне з багатьох можливих рішень. Продовжуйте досліджувати це, поки не знайдете рішення, яке стосуватиметься вашої конкретної проблеми, і удачі.
Улісс Алвес

1

Додавання Entityframework.dll та Entityframework.sqlserver.dll до еталонного проекту вирішило проблему.


1

Я перевірив вікно виводу налагодження у проектному проекті Unit Unit. EntityFramework.SqlServer.dll не завантажений. Після додавання його до тесту бін папки успішно виконувались.


1

У мене також була схожа проблема

Мою проблему було вирішено, виконавши наступне:

введіть тут опис зображення

введіть тут опис зображення


1

У мене була така ж проблема з DBContextоб'єктом Instantiating з тестового проекту. Я перевірив свої пакетні пакети тестових проектів і зрозумів, що EntityFrameworkпакет не встановлений, я встановив це з Nuget і вирішено проблему (я думаю, що це помилка EF).

щасливе кодування


0

У мене просто було те саме повідомлення про помилку.

У мене є окремий проект для доступу до даних. Запуск веб-проекту (на який посилався проект даних) локально працював чудово. Але коли я розгорнув веб-проект, щоб забезпечити збірку: EntityFramework.SqlServer не копіювався. Я просто додав посилання на веб-проект і перерозподілив, зараз він працює.

сподіваюся, що це допомагає іншим


0

Я працював над підручником університету Contoso в автономному режимі і зіткнувся з тією ж проблемою, коли намагався створити свій перший контролер за допомогою EF. Мені довелося використовувати консоль диспетчера пакунків, щоб завантажити EF з кеш-пам'яті і створив рядок підключення до мого локального екземпляра SQL Server, моє значення тут - моя настройка webConfig для EF може бути встановлена ​​не так, як ви всі там, але мені вдалося щоб вирішити мою проблему, повністю видаливши розділ "провайдери" в межах "entitFramework"

Роберт


0

Існує легке виправлення. відкрийте посилання у вашому проекті, клацніть правою кнопкою миші "System.Data" -> властивості. Змініть "Копіювати місцеве" на "Істинне".

Проблему слід вирішити.


0

У моєму випадку я вирішив проблему, встановивши версію для розробників SQL Server 2012, коли раніше встановив SQL Server Express 2012 (x64). Здається, що забезпечив мені відсутність залежності.


0

видаліть структуру сутності з проекту через nuget, а потім додайте її знову в.


0

У моєму випадку dllне було скопійовано, хоча я додав посилання на нього. Це тому EntityFramework.SqlServer.dll, що не скопійовано у ваш проект. Додайте цей dll, і він, сподіваємось, спрацює. Ви можете це знайти в проекті, де ви додали модуль даних.


0

Додатково до всіх корисних пропозицій тут, якщо ви використовуєте EF 6.1.3, переконайтесь, що версія .net вашого проекту становить 4,5 або більше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.