如何在mongoDb上存储验证规则并使用规则引擎将这些规则应用于C#中的模型?
这里我使用RuleEngine在Student模型上应用规则。
engine.For() .Setup(e => e.Name) .MustNotBeNullOrEmpty() .MustPassRule(new NameRule()) .Setup(e => e.Email) .MustPassRule(new EmailRule()) .Setup(e => e.Mobile) .MustPassRule(new MobileRule());
但在我的情况下,实际上我想要MustNotBeNullOrEmpty()和MustPassRule(新的NameRule())必须来自Db,并且如果学生名称与Student模型的所有字段类似,则动态应用?
有没有从DataBase(MongoDB)动态添加规则的解决方案?
答案 0 :(得分:0)
MongoDB具有动态模式,因此无法强制执行类似MustNotBeNullOrEmpty的操作。但是,您可以使用类似
的查询排除检索到的文档的值为null或为空db.yourColl.({$and:[
{"fieldNotNullOrEmpty":{$exists:true}},
{"fieldNotNullOrEmpty":{$ne:""}}
]})
答案 1 :(得分:0)
您可以做的是设计您的规则,以便在可以存储的模型中表示(在您的情况下在mongoDB中)。例如,one之类的内容允许您以XML格式对验证规则进行建模。当你有一个可以存储在任何地方的可转移对象(文件系统,数据库,blob存储...),然后能够将实际规则模型序列化为中间形式(XML,JSON ...)并将这些模型存储回来进入您的存储(例如mongoDB),当您需要时,可以从存储中加载模型,反序列化并重新构建规则模型,然后执行它们。
您的代码示例的问题在于规则的建模是在流畅的界面中,可以用作规则模型的构建器而不是实际模型本身。而是将规则模型与构建器组件(流畅的界面)分开。然后,您可以自由地执行您需要的操作(例如,在db中存储)以处理您的规则模型。