私はNHibernate 3.2を使用しており、マッピングで「エンティティ名」を指定して、同じクラスにマッピングされた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の内部コードなどを勉強中。
誰かが助けることができれば素晴らしいでしょう。ありがとう。