我尝试创建继承,以便我可以拥有一些具有通用属性的父类(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 之间没有连接
那么我缺少什么才能让它使用继承呢?
最佳答案
我相当确定如果您 KeyColumn("GameId");从 QMGameActiveMap() 中,NHibernate 将生成带有 ID 列 GameID 的 QMGameActive,该 ID 列将是 Game.GameId 的外键。这似乎会给你你想要的东西。
(抱歉,出门在外,无法尝试代码来确定)。
关于mysql - 使用流畅的 NHibernate 创建继承时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192080/