0

我试图创建继承,这样我就可以拥有一些具有通用属性的超类,然后是更专业的类,这些类会被使用。

我想要他们在这里制作的每种类型的表或每个类的表http://www.codeproject.com/Articles/232034/Inheritance-mapping-strategies-in-Fluent-Nhibernat

所以我在这里有我的超类型游戏

    public abstract class Game
{
    public virtual int Id { get; set; }
    public virtual List<UserGame> UserList { get; set; }
}

public class GameMap : ClassMap<Game>
{
    public GameMap()
    {
        Id(x => x.Id, "GameId")
            .GeneratedBy
            .HiLo("100");
        HasMany(x => x.UserList)
           .Cascade.All();
    }
}

然后我的专业课在这里 QMGameActive

    public class QMGameActive : Game
{
    public virtual DateTime LastUpdate { get; set; }
    public virtual string SelectedBrick { get; set; }
    public virtual int Score { get; set; }
    public virtual string History { get; set; }
    public virtual int StartingPlayerId { get; set; }

    public QMGameActive() 
    {
        LastUpdate = DateTime.Now;
        History = "";
        SelectedBrick = "";
    }
}

public class QMGameActiveMap : SubclassMap<QMGameActive>
{
    public QMGameActiveMap()
    {
        KeyColumn("GameId");
        Map(x => x.LastUpdate);
        Map(x => x.SelectedBrick);
        Map(x => x.Score);
        Map(x => x.History);
        Map(x => x.StartingPlayerId);
    }
}

但是当我从服务器获得图表时,我可以看到 Game 和 QMGameActive 之间没有连接

在此处输入图像描述

那么我错过了什么让它使用继承?

4

1 回答 1

1

我相当肯定,如果你 KeyColumn("GameId"); 从 QMGameActiveMap() 然后 NHibernate 将生成 QMGameActive,其 ID 列 GameID 将是 Game.GameId 的外键。这似乎会给你你想要的。

(很抱歉离家出走,无法尝试代码以确保)。

于 2012-06-26T12:50:07.630 回答