Я использую fluentnhibernate с PostgreSQL. Fluentnhibernate является последней версией. Версия PosrgreSQL 8.4. Мой код для создает ISessionFactory:
public static ISessionFactory CreateSessionFactory()
{
string connectionString = ConfigurationManager.ConnectionStrings["PostgreConnectionString"].ConnectionString;
IPersistenceConfigurer config = PostgreSQLConfiguration.PostgreSQL82.ConnectionString(connectionString);
FluentConfiguration configuration = Fluently
.Configure()
.Database(config)
.Mappings(m =>
m.FluentMappings.Add(typeof(ResourceMap))
.Add(typeof(TaskMap))
.Add(typeof(PluginMap)));
var nhibConfig = configuration.BuildConfiguration();
SchemaMetadataUpdater.QuoteTableAndColumns(nhibConfig);
return configuration.BuildSessionFactory();
}
Когда я, выполняют код в строке SchemaMetadataUpdater. QuoteTableAndColumns (nhibConfig); ошибка броска: Система. NotSupportedException: Указанный метод не поддерживается.Помогите мне, пожалуйста! Я - очень потребность в решении.С уважением
Попробуйте это:
public static ISessionFactory CreateSessionFactory()
{
string connectionString = ConfigurationManager.ConnectionStrings["PostgreConnectionString"].ConnectionString;
IPersistenceConfigurer config = PostgreSQLConfiguration.PostgreSQL82.ConnectionString(connectionString);
FluentConfiguration configuration = Fluently
.Configure()
.Database(config)
.Mappings(m =>
m.FluentMappings.Add(typeof(ResourceMap))
.Add(typeof(TaskMap))
.Add(typeof(PluginMap)));
configuration.ExposeConfiguration(x => x.SetProperty("hbm2ddl.keywords", "auto-quote"));
return configuration.BuildSessionFactory();
}
Я пробовал и то, и другое. У меня это не сработало с последней версией Fluent NHibernate (5f7adcd) и последней версией postgresql 8.4. Эти двое вероятно отключены от Fluent NHibernate. Если вы используете NHibernate и HBM без Fluent, это сработает для вас.
Чтобы явно попросить Fluent NHibernate сгенерировать Quoted Identifier для таблицы и столбца, я исправил два файла в исходном коде Fluent NHibernate, чтобы заставить его работать для postgresql. {{1 }} (Если вам не нужна такая же сборка для других баз данных)
пространство имен: FluentNHibernate.MappingModel.Выход
Добавить «Цитата» к имени таблицы в XmlClassWriter.cs
if (classMapping.HasValue (x => x.TableName))
classElement.WithAtt («table», new System .Text.StringBuilder (). Append ("\" "). Append (classMapping.TableName) .Append (" \ ""). ToString ());
Добавить "Цитата" к имени столбца at XmlColumnWriter.cs
if (columnMapping.HasValue (x => x.Name))
element.WithAtt ("имя", новый System.Text.StringBuilder (). Append ("\ "") .Append (columnMapping.Name) .Append ("\" "). ToString ());
Пока это работает как шарм. Получите исходный код на http://github.com/jagregory/fluent-nhibernate и создайте свой собственный с указанными выше обновлениями.