Замените NHibernate.config от Sharp Architecture на свободную конфигурацию - PullRequest
0 голосов
/ 18 апреля 2011

По умолчанию решение, сгенерированное из пакета шаблонов Sharp Architecture, настраивает NHibernate с использованием файла NHibernate.config в проекте {SolutionName}.Web.Я хотел бы заменить его на свою свободную конфигурацию, но остальная часть Sharp Architecture работает правильно.

Любая помощь будет высоко оценена.:)

Решение : Вот как я заставил его работать:

IPersistenceConfigurer configurer = OracleClientConfiguration.Oracle10
    .AdoNetBatchSize(500)
    .ShowSql()
    .ConnectionString(c => c.FromConnectionStringWithKey("NHibernate.Localhost"))
    .DefaultSchema("MySchema")
    .ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
    .UseReflectionOptimizer();

NHibernateSession.Init(
    webSessionStorage,
    new string[] { Server.MapPath("~/bin/MyProject.Data.dll") },
    new AutoPersistenceModelGenerator().Generate(),
    null,
    null,
    null,
    configurer);

Ответы [ 2 ]

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

Очень старый пост.Я оставлю это здесь на случай, если кто-то еще заинтересован.В SharpArch 1.9.6.0 вы можете добавить два метода в NHibernateSession.cs.Это позволит вам передать объект FluentConfiguration.

    public static FluentConfiguration Init(ISessionStorage storage, FluentConfiguration fluentConfiguration)
    {
        InitStorage(storage);
        try
        {
            return AddConfiguration(DefaultFactoryKey, fluentConfiguration);
        }
        catch
        {
            // If this NHibernate config throws an exception, null the Storage reference so 
            // the config can be corrected without having to restart the web application.
            Storage = null;
            throw;
        }
    }

    private static FluentConfiguration AddConfiguration(string defaultFactoryKey, FluentConfiguration fluentConfiguration)
    {
        var sessionFactory = fluentConfiguration.BuildSessionFactory();
        Check.Require(!sessionFactories.ContainsKey(defaultFactoryKey),
            "A session factory has already been configured with the key of " + defaultFactoryKey);

        sessionFactories.Add(defaultFactoryKey, sessionFactory);

        return fluentConfiguration;
    }
0 голосов
/ 18 апреля 2011

iirc класс NhibernateSession, используемый для настройки nhibernate, имеет множество перегрузок, одна из которых дает вам возможность настроить его с помощью кода.

...