在CsvHelper.Configuration.ClassMap对象(string)中添加验证 &



我使用CsvHelper.Configuration.ClassMap读取csv文件,并面临数据验证。

我找到了Validate选项并写了一个简单的代码:

Map(m => m.Field).Name("myField").Validate(row => row.Contains('='));

但是我不理解输出,对可能的选项有点困惑。

我的问题是:

  1. 如果它返回true -我会收到字符串吗?还是布尔值为真?我想把值添加到DB之后…

  2. 如果返回false -我收到什么?而且,无论如何,值不会被添加到DB?

  3. 任何想法如何添加简单的验证?常规代码,没有验证:

    地图(m =比;m.Field) . name("myField";

提前感谢!

使用CsvHelper 27.1.1可以这样写

Map(m => m.Field).Name("myField").Validate(x => x.Field.Contains('='));

在15.0.3中不能使用Field

Map(m => m.Field).Name("myField").Validate(x => x.Contains("="));

Validate函数具有以下签名:

public virtual MemberMap<TClass, TMember> Validate(Validate validateExpression);

验证类型是一个委托声明:

public delegate bool Validate(ValidateArgs args);

ValidateArgs具有我在代码示例中使用的属性Field。

如果在转换过程中条件为false,则抛出FieldValidationException。

你可以捕获这个异常并添加一些逻辑。

  1. 如果为true,转换将按预期工作,您的字段将被映射。
  2. 将抛出FieldValidationException。