2012-02-15 96 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 { ... });