2012-02-15 66 views

回答

0

也許這樣的事情會爲你工作。這是流利的語法,但你明白了。這假定這個表的兩個版本都存在於同一個數據庫中。如果他們不是,我不認爲這可以做到。

public class TableVersionMap : ClassMap<TableVersion> 
{ 
    public TableVersionMap() 
    { 
     Table("TableVersion1"); 
     Id(x => x.Id); 
     Map(x => x.A); 
     Map(x => x.B); 
     Map(x => x.C); 

     Join("TableVersion2", uc => 
     { 
      uc.KeyColumn("Id"); 
      uc.Map(x => x.D); 
     }); 
    } 
} 
+0

你能告訴我一些文檔的URL我可以看看了更詳細的解釋關於這個主題 – user2479183 2012-02-15 23:26:17

+0

首先是這兩個表在同一個數據庫或者是他們在不同版本的數據庫? – 2012-02-15 23:27:34

+0

他們在不同版本的數據庫中 – user2479183 2012-02-15 23:31:34

0

如果我正確理解你,你想將同一個類映射到兩個不同的表。在這種情況下,您應該在映射中使用不同的實體名稱。由於您尚未指定映射首選項,因此我將在我的示例中使用hbm。

<class entity-name="ArtistA" name="Artist" table="artist_a"> 
    <id name="Id" column="artist_a_id"> 
     <generator class="native" /> 
    </id> 

    <property name="Name" column="artist_a_name" not-null="true" /> 
</class> 

<class entity-name="ArtistB" name="Artist" table="artist_b"> 
    <id name="Id" column="artist_b_id"> 
     <generator class="native" /> 
    </id> 

    <property name="Name" column="artist_b_name" not-null="true" /> 
</class> 

注意entity-name屬性的存在。當持久化一個實體時,你應該指定實體名稱。

session.Save("ArtistA", new Artist { ... });