2014-10-16 5 views
0

Я пытаюсь в частном порядке развернуть SQL CE WPF с Entity Framework 6 с использованием кода First.SQLCE 4 Private Entity Framework Framework 6

На базе машины развития генерирует штраф в папке AppData и однако все прекрасно работает на тестирование ПК я получаю исключение (без БД):

"The ADO.NET provide with invariant name 'System.Data.SQlServerCe.40' is either not registered in the machine or application config file' 

Я пытался реализовать всю доступную литературу по данному вопросу, но все еще есть проблема. Я проверил папку Bin с Развернутой папкой, и это то же самое, все библиотеки (x86 и amd64) присутствуют, а целевая платформа Project Platform - x86.

  1. No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlServerCe.4.0'
  2. http://erikej.blogspot.dk/2013/11/entity-framework-6-sql-server-compact-4_25.html
  3. Entity Framewok Code First "ADO.NET provider not found" with local SQL Server CE DLL's

пыльник мой App.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <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> 
    <contexts> 
     <context type="MyProject.DAL.GreatContext, MyProject"> 
     <databaseInitializer type="MyProject.Module.Database.Dal.GreatDbInitializer, MyProject" /> 
     </context> 
    </contexts> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
     <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" /> 
    </providers> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

    <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> 


</configuration> 

Я также добавил сильфона код, но по-прежнему остается вопрос:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Любые мысли?

+0

Что версия сборка System.Data.SqlServerCe.dll в комплекте с вашим проектом? – ErikEJ

ответ

2

Предполагая, что вы используете версию 4,0,0,1 поставщика ado.net, вы должны использовать эту сборку перенаправлением

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" culture="neutral"/> 
    <bindingRedirect oldVersion="4.0.0.0-4.0.0.1" newVersion="4.0.0.1"/> 
    </dependentAssembly> 
</assemblyBinding> 

Перенаправление Entityframework.dll не будет работать.

И правильное решение использовать мой EntityFramework.SqlServerCompact.PrivateDeployment NuGet пакет

+0

Привет, Эрик, я тоже пробовал этот код и получил исключение. «Определенное определение манифеста сборки не соответствует assebmly reference» на компьютере разработки. – Jim

+0

Используете ли вы монтажную версию 4,0,0,1? Некоторые советы здесь http://stackoverflow.com/questions/215026/the-located-assemblys-manifest-definition-does-not-match-the-assembly-reference – ErikEJ

+0

System.Data.SqlServerCe: Версия 4.0.0.0, справка pls если я должен обновиться? Я добавил их через Nuget – Jim