Проблема конфигурации NHibernate - PullRequest
2 голосов
/ 23 апреля 2011

Кто-нибудь может мне помочь. Моя цель - всегда использовать одну и ту же базу данных. По мне, это отменяет все мои данные. Я получаю эту ошибку: неверная или неполная конфигурация была использована при создании SessionFactory. Проверьте коллекцию PotentialReasons и InnerException для более подробной информации.

Мой код выглядит так:

с использованием FluentNHibernate; с помощью NHibernate; с помощью FluentNHibernate.Cfg; с помощью FluentNHibernate.Cfg.Db; с помощью FluentNHibernate.Automapping; с помощью NHibernate.Cfg; с помощью NHibernate.Tool.hbm2ddl; с помощью NHibernate.Criterion; с помощью FluentNhibernateTest; с помощью FluentNHibernate.Mapping; с помощью MMAdminPfyn.MappingFiles;

namespace FluentNhibernateTest { открытый закрытый класс FluentNHibernateHelper { приватная статическая ISessionFactory sessionFactory;

    public static ISessionFactory GetInstance()
    {
        if (sessionFactory == null)
        {
            sessionFactory = BuildSessionFactory();
        }
        return sessionFactory;
    }

    private static ISessionFactory BuildSessionFactory()
    {

        return Fluently.Configure()
            .Database(PostgreSQLConfiguration.PostgreSQL82
            .ConnectionString(c => c
                .Host("localhost")
                .Port(5432)
                .Database("blablabla")
                .Username("blablabla")
                .Password("blablabla")))
                .Mappings(m => m.FluentMappings
                                    .AddFromAssemblyOf<AdresseMap>()
                                    .AddFromAssemblyOf<PersonMap>()
                                    .AddFromAssemblyOf<InstitutionMap>()
                                    .AddFromAssemblyOf<LiteraturMap>()
                                    .AddFromAssemblyOf<KategorieMap>()
                                    .AddFromAssemblyOf<MediaDateiMap>()
                        )
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();
    }

    private static void BuildSchema(Configuration config)
    {
        new SchemaExport(config).Create(true,

истина); } }}

Ответы [ 2 ]

0 голосов
/ 19 апреля 2013

Эта проблема связана с этим битом:

.Mappings(m => m.FluentMappings
                                .AddFromAssemblyOf<AdresseMap>()
                                .AddFromAssemblyOf<PersonMap>()
                                .AddFromAssemblyOf<InstitutionMap>()
                                .AddFromAssemblyOf<LiteraturMap>()
                                .AddFromAssemblyOf<KategorieMap>()
                                .AddFromAssemblyOf<MediaDateiMap>()
                    )

Цитируется из https://github.com/jagregory/fluent-nhibernate/wiki/Fluent-configuration,

Если вы находитесь в ситуации, когда ваше приложение использует исключительно отображения отображений, тоэто конфигурация для вас.

, что означает, что вы даете сборку , которая содержит классы;то, что вы делаете здесь, равносильно тому, чтобы сказать Fluent: «Сопоставьте сборку, которая содержит этот класс».

var sessionFactory = Fluently.Configure()
  .Database(SQLiteConfiguration.Standard.InMemory)
  .Mappings(m =>
    m.FluentMappings
      .AddFromAssemblyOf<YourEntity>())
  .BuildSessionFactory();

Попробуйте вместо этого.

.Mappings(m => m.FluentMappings.AddFromAssemblyOf<AdresseMap>());
0 голосов
/ 25 апреля 2011

Следующее выглядит странно:

.Mappings(m => m.FluentMappings
                                    .AddFromAssemblyOf<AdresseMap>()
                                    .AddFromAssemblyOf<PersonMap>()
                                    .AddFromAssemblyOf<InstitutionMap>()
                                    .AddFromAssemblyOf<LiteraturMap>()
                                    .AddFromAssemblyOf<KategorieMap>()
                                    .AddFromAssemblyOf<MediaDateiMap>()
                        )

Существуют ли эти сопоставления (AddressMap, PersonMap и т. Д.) В разных библиотеках? Если они не нужны, вам нужно только одно из этих утверждений, и оно найдет все ваши сопоставления в этой сборке. Таким образом, вам нужно только следующее:

return Fluently.Configure()
            .Database(PostgreSQLConfiguration.PostgreSQL82
            .ConnectionString(c => c
                .Host("localhost")
                .Port(5432)
                .Database("blablabla")
                .Username("blablabla")
                .Password("blablabla")))
                .Mappings(m => m.FluentMappings
                                    .AddFromAssemblyOf<AdresseMap>()
                        )
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...