实体框架代码优先 - 模拟伪XOR

时间:2016-02-12 23:18:40

标签: entity-framework

我是实体框架的新手,我很喜欢我所看到的,但现在我试图将其付诸实践。我正在做一个"任务"包含必须完成的任务列表的网站。

场景如下:任务必须通过以下方式完成:(a)一个玩家或(b)一个阵营。它不能由玩家和派系完成。

派系可以由许多玩家组成。这种情况非常简单。

好吧,在EF之前,我可以轻松地在桌面上设置约束。该表的架构可能如下所示:

任务

  • ID
  • 描述
  • PlayerID< - Nullable
  • FactionID< - Nullable

此外,我还有一个检查约束,例如......

(PlayerID IS NOT NULL且FactionID为NULL)或(PlayerID为IS NULL且FactionID为非NULL)或(PlayerID为IS NULL或FactionID为空)

这会阻止同时填充PlayerID和FactionID,因为任务只能由玩家或派系满足,但不能同时满足。此外,如果PlayerID和FactionID均为NULL(有效),则表示该任务尚未分配给玩家或阵营。有了这个约束,我可以处理插入和更新,但是在有人试图填充这两个字段的情况下,DBMS也会处理数据完整性。

现在有了EF,我觉得我没有以前的控制权。我如何设计我的CLASSES和CRUD逻辑,以便保持我的约束?

谢谢。

Trecius

0 个答案:

没有答案
相关问题