Соединение Платформы объекта с базой данных SQLite, не работающей после развертывания

Я изменил основанный на наборе данных подход к своей sqlite базе данных к одному использованию Платформы Объекта. Я создал объекты с помощью мастера 2008 Visual Studio и сохранил строку подключения в app.config. Клиентская программа затем связывается через WCF с базой данных. Это работает хорошо над компьютером разработчика, когда я размещаю сервис WCF в консольном приложении. После хостинга сервиса в IIS7 на удаленном компьютере я получаю ошибку: "Базовый поставщик перестал работать на открытом". Это сгенерировано в первый раз, когда операция чтения предпринята от базы данных.

Автоматически сгенерированная строка подключения:

     <add name="xPMDbEntities" connectionString="metadata=res://*/PM_EDM.csdl|
            res://*/PM_EDM.ssdl|
            res://*/PM_EDM.msl;
            provider=System.Data.SQLite;
            provider connection string=&quot;
            data source=G:\PMPersistence\xPMDb.s3db&quot;"          
            providerName="System.Data.EntityClient" />

(Я разбил строку в нескольких строках для создания этого более читаемым).

На сервере это не работает, даже если я определяю местоположение базы данных в том же самом месте как на компьютере разработчика. Что-нибудь остальной части строки подключения, (который я не понимаю, первая вещь) должен быть отредактирован также? Ссылка на хороший ресурс о том, как создать строки подключения EF, была бы очень полезна также!

Править: Я также добавил раздел ниже к web.config файлу:

<system.data>
     <DbProviderFactories>
       <remove invariant="System.Data.SQLite"/>
       <add name="SQLite Data Provider" invariant="System.Data.SQLite" 
            description=".Net Framework Data Provider for SQLite"  
            type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
     </DbProviderFactories>
  </system.data>

Это, кажется, работает (Thomas предлагает, чтобы это было расположено в machine.config файле) как, прежде чем я добавил эту запись, я получил ошибку при высказывании той Системы. Данные. SQLite не мог быть найден.

EDIT2: Я установил Систему. Данные. SQLite dll на сервере вместо того, чтобы просто копировать dll с помощью xcopy в Каталог bin. У обоих machine.config в папках Framework/Config и Framework64/Config теперь есть вышеупомянутая запись DbFactory. Это не имеет значение (если я не должен перезапускать сервер??)

5
задан Çağdaş Tekin 1 March 2010 в 00:49
поделиться

4 ответа

Aspell.Net выглядит хорошо, но, похоже, больше не поддерживается. Я не смог заставить его работать на своей машине.

После поиска в SourceForge я обнаружил NHunspell , который является портом .Net средства проверки периода от OpenOffice.org. Он предоставляет методы проверки орфографии, поиска синонимов и расстановки переносов. Он активно поддерживается в это время, и поставляется с простым для понимания образцом кода.

По собственным словам проекта:

Проверка периода, Гипенация и Тезаурус: NHunspell

NHunspell - это свободный период с открытым исходным кодом для .NET Framework. C # и Доступен образец кода Visual Basic для проверки периода, расстановки переносов и поиск синонимов через тезаурус.

NHunspell основан на Hunspell и вызывает проверку периода Open Office, переносы и тезаурус в Microsoft ® .NET Framework. NHunspell является библиотекой и оболочками .NET (C #, VB) собственные библиотеки Hunspell, дефис и MyThes.

Интегрированные библиотеки используются в OpenOffice и работа с словари опубликованы на OpenOffice.org. Лицензия

NHunspell лицензирована по: GPL/LGPL/MPL. Свободное использование в коммерческих целях допускаются приложения в соответствии с лицензии LGPL и MPL. Ваш коммерческое приложение может связать против DLL NHunspell.

NHunspell

-121--1533147-

Ответы на все эти вопросы были получены ранее.

Как бы Вы безопасно и безопасно хранили пароли в MySQL? Какие типы шифрования можно использовать?

См. https://stackoverflow.com/search?q=password+hash+database+php

Если пользователям было разрешено загружать картины, лучше ли хранить их в базе данных или загружать непосредственно на сервер?

См. https://stackoverflow.com/search? q = store + images + database + php

Какие веб-приложения с открытым исходным кодом (такие как WordPress) вы бы рекомендовали мне читать и изучать (желательно что-то простое, но хорошо написанное)?

Смотрите https://stackoverflow.com/search? q = social + network + php

Также следует учитывать, что запуск и управление сайтом социальной сети - это не просто кодирование. Вы действительно хотите создать его с нуля? Подумайте, будете ли вы в равной степени довольны чем-то вроде Ning, где каждый может создать свое собственное сообщество без программирования?

-121--4903889-

последовательность подключения действительно была OK. Проблема заключалась в том, что вам пришлось развернуть system.data.sqlite.dll и system.data.sqlite.linq.dll в папку Bin веб-службы, на которой размещено подключение к базе данных.

6
ответ дан 13 December 2019 в 19:27
поделиться

Я согласен с Томасом, коннектор выглядит нормально. Но если вы ищете информацию о построении строк соединения, то проверьте:

1
ответ дан 13 December 2019 в 19:27
поделиться

Я получил эту работу, добавив следующий javascript:

// Added to make dates format to ISO8601
Date.prototype.toJSON = function (key) {
    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    return this.getUTCFullYear()   + '-' +
         f(this.getUTCMonth() + 1) + '-' +
         f(this.getUTCDate())      + 'T' +
         f(this.getUTCHours())     + ':' +
         f(this.getUTCMinutes())   + ':' +
         f(this.getUTCSeconds())   + '.' +
         f(this.getUTCMilliseconds())   + 'Z';
};

Я уверен, что это, вероятно, замедляет сериализацию, но кажется, что это делает вещи последовательными в браузерах.

-121--1686207-

Всегда запускайте один и тот же AVD на одних и тех же портах, не позволяйте эмулятору решать. Затем используйте

$ emulator -ports X,Y @avd_X

, серийный номер будет эмулятором-X , а avd _ X всегда будет находиться на портах X, Y , чтобы можно было выполнить команды с этим серийным номером, например

$ adb -s emulator-X shell cmd

Чтобы отключить эмулятор, выполните

$ adb -s emulator-X emu kill
-121--2910291-

Подключение последовательности Вы уверены, что поставщик SQLite ADO.NET правильно установлен на сервере? Откройте файл machine.config и проверьте, есть ли запись для System.Data.SQLite в разделе DbProvireFactories

Ссылка на хороший ресурс о том, как создавать последовательности EF-соединений, также была бы очень полезна!

В основном необходимо указать: - метаданные модели (части с «res ://»...) - поставщик хранилища («System.Data.SQLite» в вашем случае) - строка соединения хранилища, которая варьируется в зависимости от используемого поставщика

Самый простой способ динамического построения строки соединения - использовать класс EntityConniceStringBuilder вместе с построителем строк соединения поставщика хранилища.

4
ответ дан 13 December 2019 в 19:27
поделиться

попробуйте использовать двойную косую черту для пути ??

G:\\PMPersistence\\xPMDb.s3db

Также указание имени сборки вместо * может помочь, когда приложение ищет ssdl, csdl, msl

res://YourAssemblyName(without the dll extn)/PM_EDM.ssdl|
0
ответ дан 13 December 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: