我有一个有两个版本的表 例如 带有列的TableVersion1:A,B,C, 具有列的TableVersion2:A,B,C,D
如何编写适用于两个版本的表的实体?
答案 0 :(得分: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);
});
}
}
答案 1 :(得分: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 { ... });