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

C# FluentValidation-如何让一个实体属性值驱动另一个实体验证,c#,entity-framework,fluentvalidation,C#,Entity Framework,Fluentvalidation,我有一个由多个属性和多个集合组成的对象一个简化示例: "Form": { "Funders": [ { "FunderID": "string", "Name": "string", "Type": "string" } ], "Publications": [ { "PublicationID": "string", "Name": "string", "Type": "string",

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

"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",
}
如果
出资人
中的任何出资人具有使用流畅验证的
类型
,我如何验证
出版物
至少有1份
出版物
类型

以另一种方式陈述如果任何出资人类型为a类型,则出版物中的一份出版物必须为Z类型

目前,我有用于出版物、资助者和表单的验证器,只是在努力弄清楚如何创建此验证


我使用的是fluentvalidation、c#、实体框架。

答案是在整个模型上执行验证。其实很简单

   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");