ActiveRecord, NHibernate и PostgreSQL - PullRequest
2 голосов
/ 18 июня 2011

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

У меня есть простой класс для тестирования NHibernate Active Record и PostgreSQL, посмотрите

[ActiveRecord]
public class Accident:ActiveRecordBase<Accident>
{
    [PrimaryKey(PrimaryKeyType.Sequence)]
    public int Id { get; set; }

    [Property]
    public string Address { get; set; }

    [Property]
    public int AddressNumber { get; set; }

    [Property]
    public testAccidentType AccidentType { get; set; }
}

public enum testAccidentType
{
    FRONT,
    BACK,
    SIDE
}

И я пытаюсь создать схему из моего класса, например:

public class Startup
{
    public static void StartActiveRecord()
    {
        XmlConfigurationSource source = new XmlConfigurationSource(@"c:\users\h\documents\visual studio 2010\Projects\TestNHibernate\TestNHibernate\Model\config.xml");
        ActiveRecordStarter.Initialize(source, GetActiveRecordTypes());

        ActiveRecordStarter.CreateSchema();
    }

    public static Type[] GetActiveRecordTypes()
    {
        List<Type> types = new List<Type>()
        {
            typeof(Accident)
        };
        return types.ToArray();
    }
}

ActiveRecord может инициализировать этот класс, но он всегда застревает в методе CreateSchema. Вот файл конфигурации. Любые советы от экспертов?

<?xml version="1.0" encoding="utf-8" ?>

<activerecord isWeb="false">
  <config>
    <add key="connection.driver_class" value="NHibernate.Driver.NpgsqlDriver" />
    <add key="connection.connection_string" value="Server=localhost;initial catalog=nhiber;User ID=postgres;Password=***;" />
    <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
    <add key="dialect" value="NHibernate.Dialect.PostgreSQLDialect" />
  </config>
</activerecord>

РЕДАКТИРОВАТЬ: Я понял это. проблема в том, что документация неверна. PostgreSQL не использует ключевое слово «начальный каталог», но использует «базу данных», например:

    <add key="connection.connection_string" value="Server=localhost;database=nhiber;User ID=postgres;Password=***;" />

спасибо!

1 Ответ

0 голосов
/ 21 марта 2013

Вам необходимо изменить строку подключения:

<add key="connection.connection_string" value="Server=localhost;database=nhiber;User ID=postgres;Password=***;" />
...