Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用fluent NHibernate创建继承时遇到的问题_Mysql_Nhibernate_Fluent Nhibernate - Fatal编程技术网

Mysql 使用fluent NHibernate创建继承时遇到的问题

Mysql 使用fluent NHibernate创建继承时遇到的问题,mysql,nhibernate,fluent-nhibernate,Mysql,Nhibernate,Fluent Nhibernate,我试图创建继承,这样我就可以拥有一些具有一般属性的超类,然后是使用的更专业的类 我想要像每种类型的桌子或他们在这里制作的每类桌子这样的东西 我这里有我的超级游戏 public abstract class Game { public virtual int Id { get; set; } public virtual List<UserGame> UserList { get; set; } } public class GameMap : ClassMa

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

我想要像每种类型的桌子或他们在这里制作的每类桌子这样的东西

我这里有我的超级游戏

    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();
    }
}
公共抽象类游戏
{
公共虚拟整数Id{get;set;}
公共虚拟列表用户列表{get;set;}
}
公共类游戏地图:类地图
{
公共游戏地图()
{
Id(x=>x.Id,“GameId”)
.产生于
.HiLo(“100”);
HasMany(x=>x.UserList)
.Cascade.All();
}
}
然后我的专业课就开始了

    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);
    }
}
公共类QMGameActive:游戏
{
公共虚拟日期时间上次更新{get;set;}
公共虚拟字符串SelectedBrick{get;set;}
公共虚拟整数分数{get;set;}
公共虚拟字符串历史记录{get;set;}
公共虚拟int StartingPlayerId{get;set;}
公共QMGameActive()
{
LastUpdate=DateTime.Now;
历史=”;
SelectedBrick=“”;
}
}
公共类QMGameActiveMap:子类映射
{
公共QMGameActiveMap()
{
KeyColumn(“GameId”);
映射(x=>x.LastUpdate);
映射(x=>x.SelectedBrick);
Map(x=>x.Score);
地图(x=>x.History);
Map(x=>x.StartingPlayerId);
}
}
但当我从服务器上得到一个图表时,我可以看到游戏和QMGameActive之间没有连接


那么,要让它使用继承,我还缺少什么呢?

我可以肯定,如果您键入column(“GameId”);从QMGameActiveMap()中,NHibernate将生成QMGameActive,其ID列为GameID,这将是Game.GameID的外键。这似乎给了你想要的


(很抱歉离家出走,无法尝试代码验证)。

拥有此继承并创建一个只有Id的游戏表有什么意义?现在我的数据库中只有一个游戏,但以后会有多个游戏,每个游戏都将继承自“超类型”的游戏我还将创建更多的子类型,因为还将有一个QMGameInActive,我希望我的数据库图看起来像是您可能想了解这一点:但我已经有了KeyColumn(“GameId”);在QMGameActiveMap中?如果是他们的或不是他们的,这没有什么区别,只是创建了你在图片中看到的“索引”