SchemaUpdate() を使用して、自動インクリメントされた ID を持つマップされたクラスを PostgreSQL サーバーにエクスポートすると、 「エラー: 42P07: リレーション "seq_wuf" は既に存在します」という例外がスローされます。
テーブルとシーケンスがサーバーに実際に存在するため、例外がスローされますが、SchemaUpdate() が既存のシーケンスを無視すると予想されます。
マッピング表
public class CategoryMap : ClassMap<Category>
{
public static string tableName = "miao";
public CategoryMap()
{
SchemaAction.Export();
Table(tableName);
Id(x => x.Id).GeneratedBy.Sequence("SEQ_" + tableName);
Map(x => x.Name).Column("Category")
.CustomType("String")
.Access.Property()
.Generated.Never()
//.CustomSqlType("nvarchar(50)") // <----
.Not.Nullable()
.Length(50); ;
Map(x => x.Description);
}
}
エクスポート スキーマ:
FluentConfiguration config = Fluently.Configure();
config
.Database(PostgreSQLConfiguration
.Standard
.ConnectionString(connStringPosgtgres))
.Mappings(m => m.FluentMappings.Add(typeof (CategoryMap)))
.ExposeConfiguration(UpdateSchema)
.BuildConfiguration();
SchemaUpdate()
private static void CreateSchema(Configuration cfg)
{
var schemaExport = new SchemaExport(cfg);
schemaExport.Drop(false, true);
schemaExport.Create(false, true);
}
ありがとう、ユヴァル