小编iam*_*ody的帖子

返回多个ValidationExceptions

一直试图将服务器端DataAnnotation验证合并到我的项目中,我发现DataAnnotations有自己的错误类型ValidationException.但是,我的问题在于,它一次只返回一个验证错误,所以如果3个属性验证失败,则只抛出第一个.我正在寻找一种方法将所有错误作为异常抛出,因此它不会通知用户/开发人员验证失败,而是会一次性说明哪些属性/字段验证失败.

我找到了Validator.TryValidateObject(...)方法,但它只是填充ValidationResults并让开发人员选择是否抛出异常.我目前正在实现的是迭代ValidationResults以从中创建ValidationExceptions列表,将列表包装到AggregateException中,然后在其InnerExceptions中抛出另一个带有AggregateException的ValidationException.

ValidationContext validationContext = new ValidationContext(entity, null, null);
List<ValidationResult> validationResults = new List<ValidationResult>();

bool isValid = Validator.TryValidateObject(entity, validationContext, validationResults, true);

if (!isValid)
{
      List<ValidationException> validationErrors = new List<ValidationException>();
      foreach (ValidationResult validationResult in validationResults)
      {    
           validationErrors.Add(new ValidationException(validationResult.ErrorMessage);
      }

      throw new ValidationException("Entity validation failed.", new AggregateException(validationErrors));
}
Run Code Online (Sandbox Code Playgroud)

所以基本上,我的问题是:

  1. 有没有理由为什么没有内置方法同时抛出多个错误?也就是说,我错过了一些DataAnnotation Validations的最佳实践?
  2. 有没有更好的方法来实现我想要实现的目标?
  3. 另外......在将ValidationResult包装到ValidationException中时,如何包含成员名称?

c# validation error-handling data-annotations

9
推荐指数
1
解决办法
2911
查看次数

多标签分类 ML-kNN 与 KNN

这可能是一个愚蠢的问题,但我只是想知道 scikit.ml 中实现的 ML-KNN 和 scikit-learn 的 KNeighborsClassifier 之间的区别是什么。根据sklearn 的文档, KNeighborsClassifier 支持多标签分类。然而,ML-KNN 是适用于多标签分类的 KNN,它基于 sklearn 的架构基于它的docs

在搜索样本多标签问题时,MLkNN 主要出现,但我不明白使用它是否比 sklearn 的基本实现有任何优势,如果它已经支持它。只是sklearn方面的后期适配还是在实现上有更多差异?

任何输入表示赞赏。谢谢!

python machine-learning scikit-learn multilabel-classification scikit-multilearn

5
推荐指数
1
解决办法
1561
查看次数

无法将数据库导入/部署到SQL Azure:"指定的服务目标(业务/ Web)无效."

我正在尝试将我的数据库移动到更新的Azure订阅.我曾经只是从SSMS在本地数据库上单击"Deploy to Azure",并将其部署到指定的Azure服务器.导入/导出BACPAC文件也有效.但是,我似乎无法在新服务器上执行任何操作.我一直收到错误:

"指定的服务目标'Web'无效."

谷歌搜索,我发现这个线程解释了需要更新CREATE DATABASE模板以适应Azure数据库(Azure升级,我猜).然而,该修补程序提供的是专为SQL Server 2014和我使用的是SQL Server 2012的我检查了其他的累积更新于2012年在这里却发现没有修复该问题.

有没有其他方法可以解决这个问题而无需升级到2014年?

只是总结一下我的软件版本:

  • SQL Server 2012
  • SQL Management Studio 11.0.2100.60
  • 本地数据库:SQL Server 10.50.16000
  • 旧Azure服务器:SQL Server 11.0.9230
  • 新Azure服务器:SQL Server 13.0.15

sql-server ssms azure ssms-2012 azure-sql-database

4
推荐指数
1
解决办法
2744
查看次数

数组为所有索引返回相同的值

我创建了一个名为Participant的对象.现在我想拥有一个Participant对象数组,以便我可以在datagrid中显示它们.

以下是我尝试的代码(为了更好地理解问题,我删除了循环和数据网格代码):

Participant[] list = new Participant[count];
Participant one = new Participant(name, address);
Participant two = new Participant(name2, address2);

list[0] = one;
list[1] = two;
Run Code Online (Sandbox Code Playgroud)

但是,当我以这种方式通过消息框获得一个参与者的值时,

MessageBox.Show(list[0].getName());
Run Code Online (Sandbox Code Playgroud)

它反映的是参与者二的数据.如果我有3个对象也是如此,它反映的是最后发送到数组的数据.

我知道有可能有一些对象,所以必须有一些我做错了.或者有更好的方法吗?

c# arrays

2
推荐指数
1
解决办法
461
查看次数