«Не удалось найти диалект в конфигурации» Свободный Nhibernate - PullRequest
0 голосов
/ 19 июня 2011

Я использую Fluent Nhibernate с MSSql 2008 в проекте ASP.net MVC 3.0.


private static ISessionFactory CreateSessionFactory()
        {
 FluentConfiguration configuration = Fluently.Configure()
     .Database(MsSqlConfiguration.MsSql2008
       .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true")
       .ShowSql()).ExposeConfiguration(c => c.SetProperties(AddProperty()))
     .Mappings(m => m
       .FluentMappings.AddFromAssemblyOf());
       return configuration.BuildSessionFactory();
}

private static IDictionary  AddProperty()
        {
            IDictionary config = new Dictionary();
            config.Add("current_session_context_class", "web");
            config.Add(NHibernate.Cfg.Environment.ProxyFactoryFactoryClass, "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
            return config;
        }
 

Но я получаю эту ошибку «Не удалось найти диалект в конфигурации»

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

Вы фактически перезаписываете все свойства, которые были установлены на всех предыдущих этапах настройки.Попробуйте добавить в коллекцию вместо:

private static ISessionFactory CreateSessionFactory()
{
    FluentConfiguration configuration = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008
            .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true")
            .ShowSql())
        .ExposeConfiguration(AddProperties)
        .Mappings(m => m
            .FluentMappings.AddFromAssemblyOf());

    return configuration.BuildSessionFactory();
}

private static IDictionary  AddProperties(NHibernate.Cfg.Configuration config)
{
    config.SetProperty(NHibernate.Cfg.Environment.CurrentSessionContextClass, "web");
    config.SetProperty(NHibernate.Cfg.Environment.ProxyFactoryFactoryClass, "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
    return config;
}
1 голос
/ 19 июня 2011

Вы можете попробовать что-то вроде этого

FluentConfiguration configuration = Fluently.Configure()
                            .Database(MsSqlConfiguration.MsSql2008
                            .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true")
                            .ShowSql().Dialect("NHibernate.Dialect.MsSql2008Dialect")).ExposeConfiguration(c => c.SetProperties(AddProperty()))
                            .Mappings(m => m.FluentMappings.AddFromAssemblyOf());

Также для WebSessionContext вы можете использовать этот код

FluentConfiguration configuration = Fluently.Configure()
                            .Database(MsSqlConfiguration.MsSql2008
                            .ConnectionString("Data Source=Comp;Initial Catalog=MyDB;Integrated Security=true").CurrentSessionContext<WebSessionContext>()
                            .ShowSql().Dialect("NHibernate.Dialect.MsSql2008Dialect"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...