mysql - 使用流畅的 NHibernate 创建继承时出现问题

标签 mysql nhibernate fluent-nhibernate

我尝试创建继承,以便我可以拥有一些具有通用属性的父类(super class),然后是使用的更专业的类。

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

所以我在这里有我的父类(super class)型游戏

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

然后是我的专业类(class) 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 之间没有连接

enter image description here

那么我缺少什么才能让它使用继承呢?

最佳答案

我相当确定如果您 KeyColumn("GameId");从 QMGameActiveMap() 中,NHibernate 将生成带有 ID 列 GameID 的 QMGameActive,该 ID 列将是 Game.GameId 的外键。这似乎会给你你想要的东西。

(抱歉,出门在外,无法尝试代码来确定)。

关于mysql - 使用流畅的 NHibernate 创建继承时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192080/

相关文章:

php - 参数号无效 : number of bound variables does not match number of tokens SQL

WPF - MVVM - NHibernate 验证

c# - 如何使用 Fluent NHibernate 映射序列化/反序列化元素列表?

php - 运行带返回值的 PHP 代码

mysql - 保护特定对象 ID 不被 MySQL 删除

mysql - 无需 Foreach 循环的批量更新查询 Eloquent - Laravel 5.1

nhibernate - 在我的 NHibernate/SQLite 项目中提交非常慢

c# - 动态程序集中不支持调用的成员。

.net - NHibernate:如何在运行时重新配置映射?

nhibernate - 无法转换类型为 'NHibernate.Collection.Generic.PersistentGenericBag to type ' System.Collections.Generic.List 的对象