FluentValidation - 如何让一个实体属性值驱动另一个实体验证

时间:2017-02-10 22:51:13

标签: c# entity-framework fluentvalidation

我有一个由许多属性和许多集合组成的对象,简化示例:

"Form": {
  "Funders": [
    {
      "FunderID": "string",
      "Name": "string",
      "Type": "string"
    }
  ],
  "Publications": [
    {
      "PublicationID": "string",
      "Name": "string",
      "Type": "string",
    }
  ],
  "Created": "2017-02-10T22:26:49.528Z",
  "CreatedBy": "string",
  "LastModified": "2017-02-10T22:26:49.528Z",
  "LastModifiedBy": "string",
}

如果Publications中的任何资助者使用流利的验证,Publication中有Type个资助者,我如何验证Funders至少有Type package.json Z {

如果任何出资者类型属于A类型,则说明不同的方式,那么出版物中的出版物之一必须是Z型

目前我有出版物,资助者和表格的验证工具,正在努力弄清楚如何创建此验证。

我正在使用fluentvalidation,c#,实体框架。

1 个答案:

答案 0 :(得分:0)

答案是从整个模型的验证中执行验证。它实际上非常简单。

   RuleFor(x => x.Publications
   .Where(p => p.Type == "Type Z").Count()).GreaterThan(0)
   .When(x => x.Funders.Where(f => f.Type == "Type A").Count() > 0)
   .WithMessage("An Form containing a funder of type 'Type A' must have at least one Publication with of type 'Type Z'.")
   .OverridePropertyName("Publications");