LINQ to SQL继承的优点和缺点

时间:2012-05-23 00:58:59

标签: .net database linq-to-sql inheritance

我正在设计一个基于Linq2SQL引擎的游戏。

其他对象中的游戏包含用户和NPC(非游戏角色)。

用户和NPC的功能有所不同,但它们也有一些共同的属性,如健康状况或损坏。

活动通过void AttackUser(User attacker, User target)等方法完成。

这里的问题是NPC也可以攻击用户和其他NPC,并且用户可以攻击NPC,因此我将不得不编写一些额外的方法和重载(例如void AttackNpc(User attacker, Npc npc)

我可以通过使用Linq2SQL的继承功能来简化所有这一切,使用1个通用表Creatures而不是Users和NPC。这也将允许我有一个通用方法,void Attack (Creature attacker, Creature target)而不是多个版本。

另一方面,Linq2SQL中的继承似乎大大增加了解决方案的整体复杂性。每次我决定对用户或NPC进行更改时,我都需要考虑继承问题。另外,对于Linq2SQL中的继承,我没有用户和NPC的单独表的清晰度,因为所有内容都被转储到一个表中。最后,我关注这种组合的Creatures表的性能。

很难确定我是否应该在这里使用继承,因为如果我选择一种次优的方法,将来很难转换到另一种方法。

我想听听专家的意见。

感谢。

1 个答案:

答案 0 :(得分:0)

  

每次我决定对用户或NPC进行更改时,我都需要   考虑继承问题。

是的,但如果他们在commmon中有很多也很有用,因为你不需要做两次更改。所以,如果你没有使用继承,你需要考虑重复问题。

  

另外,对于Linq2SQL中的继承,我没有那种清晰度   用户和NPC的单独表格,因为所有内容都被转储   在一张桌子里。

嗯,你正在使用Linq2SQL从你的数据库设计中抽象出来,所以“谁在意”最终。假设你有一个“类型”字段,你仍然可以创建一个用户和NPC view,如果你真的需要它。

  

最后,我关注这种组合的表现   生物表。

假设您正在使用sql server,只要您注意正确的索引,就会在遇到麻烦之前需要很多生物。

简而言之,我会继承