Fluent NHibernate を使用してオブジェクトを自動マッピングするのに問題があります。
Document
テーブルが既に SqlServer に存在するクラスが呼び出されました。
Class Packet
extends Document
と Have a member PacketDefinition
。
PacketDefinition
( WindowsフォームList
ではなく、自分のクラス)タイプがあります。Form
次の構成を使用してオブジェクトを自動マップしようとしてPacket
います。
var mapping = CreateMappings();
_sessionFactory = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008.ConnectionString(
c => c.Server("machinename\\sql2012").Database("DatabaseName").TrustedConnection())
.ShowSql)
.Mappings(m => m.AutoMappings.Add(mapping))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
private static AutoPersistenceModel CreateMappings()
{
return AutoMap
.AssemblyOf<Packet>();
}
private static void BuildSchema(Configuration config)
{
new SchemaExport(config).Create(false, true);
}
Packet
問題は、クラスを自動マップしようとすると、エラーが発生することです
System.Data.SqlClient.SqlException : There is already an object named 'Document' in the database.
テーブルがデータベースに既に存在することは理解してDocument
いますが、削除したくありません。を使用して基本クラスを無視してみました
AutoMap.AssemblyOf<Packet>().IgnoreBase<Document>();
Document
しかし、自動マッピングはテーブル内のすべてのプロパティも作成しますがPacket
、これは良くありません。
別のデータベースを作成してから同じコードを実行しようとDocument
すると、そのデータベースにテーブルが存在しないため機能します。大量のデータがあるため、既存のテーブルを削除したくありません。