Как использовать базу данных MySQL с Orchard CMS 1.3.10? - PullRequest
6 голосов
/ 02 января 2012

Я пытаюсь изменить модуль Orchard.Setup, чтобы установить Orchard CMS 1.3.10 с MySQL в качестве набора данных.

Я прихожу так долго, что я получаю MySQL в GUI для настройки, и когда я нажимаю кнопку настройки, я получаю это сообщение об ошибке из сада:

The value 'MySql' is not valid for DatabaseOptions.

Но я не могу найти, как я добавляю MySql как DatabaseOptions, кто-нибудь еще заставляет его работать с MySQL?

Старый модуль для MySQL не совместим с последней версией Orchard CMS, поэтому он звонит, чтобы сделать его самостоятельно, если я заставлю его работать, я собираюсь выпустить его с открытым исходным кодом для других.

1 Ответ

4 голосов
/ 03 января 2012

Ошибка, о которой вы говорите, заключается в том, что свойство DatabaseOptions является логическим.Вам нужно изменить это свойство, чтобы принимать строковые значения.В контроллере установки есть несколько мест, в которых вам нужно изменить способ использования этого свойства ...

Однако наиболее важной частью является реализация DataServicesProvider.Я добавил мой в ядро, но я думаю, что вы могли бы просто добавить его в модуль установки в качестве функции.Моя выглядит так ...

namespace Orchard.Data.Providers {
    public class MySqlDataServiceProvider : AbstractDataServicesProvider
    {
        private readonly string _connectionString;

        public MySqlDataServiceProvider(string dataFolder, string connectionString)
        {
            _connectionString = connectionString;
        }

        public static string ProviderName
        {
            get { return "MySql"; }
        }

        public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase)
        {
            var persistence = MySQLConfiguration.Standard;

            if (string.IsNullOrEmpty(_connectionString))
            {
                throw new ArgumentException("The connection string is empty");
            }

            persistence = persistence.ConnectionString(_connectionString);
            return persistence;
        }
    }
}

О, и не забывайте, что вам нужно ссылаться на MySql.Data.Он доступен в виде пакета NuGet.

...