N层在线游戏中的实体框架

时间:2016-12-10 18:26:29

标签: c# model-view-controller entity-framework-6 n-tier-architecture online-game

我正在努力为在线游戏找到一个好的设计模式(用于教育项目,而不是商业用途)。

让我们说我有一个玩家表,以及我的数据库中的地图表。 因此实体框架自动生成了这些Model类:

public partial class Map
{
    public Map()
    {
        this.Players = new HashSet<Player>();
    }

    public int MapID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Player> Players { get; set; }
}


public partial class Character
{
    public int CharacterID { get; set; }
    public string Name { get; set; }
    public int MapID { get; set; }

    public virtual Map Map { get; set; }
}

现在我需要一个“控制器”播放器和地图类,它们将保存状态信息(如地图上的位置):

public class MapController
{
    private Map _map;
}
public class PlayerContoller
{
    private Player _player;
    private int _locationX;
    private int _locationY;
}

现在我想向PlayerController添加一个MapController属性(它将返回播放器所在地图的MapController)。

我可以使用this._player.Map获取Map对象,但现在要找到MapContoller,我必须实现自己的MapControllers列表并搜索该列表。类似的东西:

public class PlayerContoller
{
    private Player _player;
    private int _locationX;
    private int _locationY;

    public MapController MapController
    {
        get { globalListOfMapControllers.Search(this._player.Map); }
    }
}

哪种丑陋。我希望有一个更好的方法来找到它,这已经为我实现了。 (就像Player.Map一样) 此外,它是一个冗余搜索,因为Player.Map已使用Player.MapID搜索地图对象。

有人能想到像这样的系统更好的设计吗?

谢谢你, Bugale。

0 个答案:

没有答案