2013-01-12 40 views
1

我正在使用NHibernate 3.2並有兩個表映射爲相同的類,在映射中指定「實體名稱」。麻煩的是,當我使用ISession中的方法來指示實體名稱NHibernate堅持以他們自己的名義扣除時,忽略了我的規範。NHibernate 3.2忽略實體名稱

這是代碼我的單元測試:

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的內部代碼等等。

如果任何人都可以幫助將是偉大的。謝謝。

回答

0

兩個變化需要所有的工作:版本屬性的

  1. 默認類型爲int和不長;
  2. 而最重要的:在保存方法中指定的名稱是實體名稱未在HBM中明示時指定的類的全名。

順便說一句,謝謝!