我正在使用 NHibernate 3.2 并为同一个类映射了两个表,在映射中指定了“实体名称”。麻烦的是,当我使用ISession中的方法来表示实体名称时,NHibernate坚持自己扣除,忽略了我的规范。
这是我的单元测试中的代码:
public class Cliente
{
public virtual Guid UID { get; set; }
public virtual long Revisao { get; set; }
public virtual string Nome { get; set; }
public virtual DateTime DataNascimento { get; set; }
}
<class name="Cliente">
<id name="UID">
<generator class="guid"/>
</id>
<version name="Revisao" />
<property name="Nome" />
<property name="DataNascimento" />
</class>
<class name="Cliente" entity-name="ClienteAudit" schema="audit">
<composite-id>
<key-property name="UID" />
<key-property name="Revisao" />
</composite-id>
<property name="Nome" />
<property name="DataNascimento" />
</class>
var cliente = new Cliente {DataNascimento = DateTime.Parse("1988/07/09"), Nome = "Heber Senger"};
using (var ss = sf.OpenSession())
{
ss.Save("Cliente", cliente);
ss.Flush();
}
NHibernate 坚持将实体保存为“ClienteAudit”(我在侦听器和表中验证),并且我明确告知实体名称为“Cliente”。
我只是尝试: - 在 Cliente 映射中指定实体名称;- 在方法save中省略名称,让NHibernate自由发现名称,再次在“ClienteAudit”中暗示;- 现在我正在研究SessionImpl等的内部代码。
如果有人可以提供帮助,那就太好了。谢谢。