我在使用 Fluent NHibernate 自动映射我的对象时遇到了困难。
我已经调用Document
了表已经存在于 SqlServer 中的类。
类Packet
扩展 Document
并拥有一个成员PacketDefinition
。
PacketDefinition
有一个List
(不是windows窗体,而是我自己的类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
in Packet
table 的所有属性,这并不好。
如果我创建一个单独的数据库,然后尝试运行相同的代码,它的工作原理是Document
该数据库中不存在表。我不想删除现有表,因为其中有很多数据。