FluentNHibernate:1.3.0.733
NHibernate:3.3.1.4000
我正在尝试设置Id 列的列名,但它似乎被忽略了。
编辑:
找到解决方案。属性重新声明(新修饰符)是问题(见答案)。
我正在使用带有约定和覆盖的 AutoMapping。
覆盖:
public class OrderHeadMapping : IAutoMappingOverride<OrderHead>
{
public void Override(AutoMapping<OrderHead> mapping)
{
mapping.Schema("[database].[dbo]");
mapping.Table("OrderHeads");
mapping.Id(x => x.Id, "desiredColumnName")
.Column("desiredColumnName")
.GeneratedBy.UuidString();
...
}
}
此代码被执行,但列名保持为“Id”。
我已经将映射导出到目录以查看结果:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class xmlns="urn:nhibernate-mapping-2.2" schema="[database].[dbo]" name="OrderHead, Core, Version=1.0.4666.19686, Culture=neutral, PublicKeyToken=null" table="OrderHeads">
<cache usage="read-write" />
<id name="Id" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Id" />
<generator class="assigned" />
</id>
...
</class>
</hibernate-mapping>
我已经在整个解决方案中搜索了“.Id(”和“.Column(”以确保它不会被意外重置,但没有任何结果涉及设置/覆盖 id 列名。所以现在我有点迷失了.