我正在使用实体框架在 ASP.Net 中开发酒店注册/计费应用程序。在为注册人生成账单时,我的客户有很多古怪的标准。而不是每晚每床(相当标准..)计费系统,客户可以根据他们的年龄,他们访问的具体日期,房间类型(双人床,单人床等)或他们正在参加的会议,或者所有四个...
这是我的图表:
作为一个相对年轻的程序员,我觉得我在“规则”表的某个地方遗漏了一些东西。我想要做的是允许管理员创建任意数量的 ConditionalStatements(“Age > 5”或“Age < 10”,其中“Age”是 Statement.Value,'>' 是 Condition.Value,并且'5' 是 ConditionalStatement.Value)并将它们中的任意数量链接在一起,从而创建一个“规则”。然后管理员将规则与各种 RateSchedules 相关联,然后应用程序将能够为任何已注册住宿的客户生成账单。
我觉得我走在正确的轨道上,而且这个解决方案的大部分都可以按照我需要的各种方式工作,但似乎有些不对劲。我有两个关于“规则”创建的问题。
就“规则”设计而言,我做错了什么?每次管理员想要制定新规则时,我都觉得生成一个新 RuleSet.ID 是错误的。这是我应该以编程方式做的事情吗?我应该完全重新考虑这个规则过程吗?
从实体框架/脚手架的角度来看,向数据库添加新规则的最佳方式是什么?默认脚手架允许我一次插入一行,但要实际创建一个规则,我需要将 RuleSet.ID 与多个 ConditionalStatement.ID 相关联——但我无法找到一种使用 EF 直观地做到这一点的方法脚手架..
任何指向正确方向的指针都非常感谢!谢谢 :)
编辑: 我根据对我的问题的回答进行了重新设计,但在研究过程中偶然发现了微软的业务规则引擎:http: //msdn.microsoft.com/en-us/library/aa561216.aspx 以及一个数学表达式评估器: http://ncalc.codeplex.com/ 以防万一其他人将来发现这个问题,这些链接可以提供帮助。感谢所有的帮助家伙!