NHibernate映射到表的两个版本

NHibernate映射到表的两个版本,nhibernate,Nhibernate,我有一张有两种版本的桌子 例如 表版本1,列:A、B、C、, 带有列的TableVersion2:A、B、C、D 我如何编写一个实体,它将在表的两个版本上都工作?也许类似的东西适合您。这是流畅的语法,但你明白了。这是假设此表的两个版本存在于同一数据库中。如果他们不是,我认为这是不可能的 public class TableVersionMap : ClassMap<TableVersion> { public TableVersionMap() { T

我有一张有两种版本的桌子 例如 表版本1,列:A、B、C、, 带有列的TableVersion2:A、B、C、D


我如何编写一个实体,它将在表的两个版本上都工作?

也许类似的东西适合您。这是流畅的语法,但你明白了。这是假设此表的两个版本存在于同一数据库中。如果他们不是,我认为这是不可能的

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);
       });
    }
}

如果我理解正确,您希望将同一个类映射到两个不同的表。在这种情况下,应该在映射中使用不同的实体名称。由于您尚未指定映射首选项,因此我将在示例中使用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>

你能给我看一些我可以查看的文档url以获得关于这个主题的更详细的解释吗首先,这两个表是在同一个数据库中还是在不同版本的数据库中?它们在不同版本的数据库中,那么这个解决方案将不起作用。你不能按你的要求去做。您需要有两个包含映射的不同版本的二进制文件,并在对旧版本的数据库运行时使用旧版本。
session.Save("ArtistA", new Artist { ... });