2015-08-14 1 views
0

Я использую Visual Studio 2013 (Windows) для создания небольшого приложения .NET 4.5 с использованием Npgsql и Entity Framework 6.как развернуть npgsql на Raspberry pi 2 (Mono 4 + ARM proc)?

В окнах это просто отлично работает. Но на Raspbian ошибка приложения говорит, что он не может найти поставщика npgsql.

Unhandled Exception: 
System.Configuration.ConfigurationErrorsException: Failed to find or load the registered .Net Framework Data Provider 'Npgsql'. 
    at System.Data.Common.DbProviderFactories.GetFactory (System.String providerInvariantName) [0x00000] in <filename unknown>:0 
[...] 

На мой малиновый пи 2.

я вручную установить Mono v4.0.2

Я скопировал мое приложение в том числе:

npgsql.dll v2.2.5.0

npgsql.entityframework та же версия

mono.security v4.0.2

и мой 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" /> 
    </configSections> 
    <entityFramework> 
    <providers> 
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" /> 
    </providers> 
    </entityFramework> 
    <connectionStrings> 
    <add name="minitestEntities" connectionString="metadata=res://*/Model2.csdl|res://*/Model2.ssdl|res://*/Model2.msl;provider=Npgsql;provider connection string=&quot;PORT=5432;TIMEOUT=15;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;COMMANDTIMEOUT=20;COMPATIBLE=2.2.5.0;DATABASE=minitest;HOST=10.0.0.1;INTEGRATED SECURITY=True;PASSWORD=azerty;USER ID=theuser&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

Так что я интересно, если правильно загружены npgsql librairies, или если ссылка отсутствует.

Я не нашел документов о том, как использовать npgsql в недавней среде mono + ARM. Любая информация об этом была бы действительно оценена.

ответ

0

ok Я нашел решение в другом разделе. В то же время я забыл отметить свой URL, так вот ответ:

Мы должны вручную добавить описание поставщика в app.config:

<system.data> 
    <DbProviderFactories> 
    <add name="Npgsql Data Provider" 
     invariant="Npgsql" 
     support="FF" 
     description=".Net Framework Data Provider for Postgresql Server" 
     type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" /> 
    </DbProviderFactories> 
</system.data> 

Версия и PuclicKeyToken должны соответствовать npgsql.dll. Чтобы получить маркер открытого ключа, вы можете запустить этот код:

typeof(Npgsql.NpgsqlFactory).AssemblyQualifiedName 

Теперь я понятия не имею, почему этот шаг не является необходимым в окно, но нужно сделать в Linux ...