如何在插入数据库C#之前验证数据?

如何在插入数据库C#之前验证数据?,c#,asp.net,excel,model-view-controller,C#,Asp.net,Excel,Model View Controller,我需要在插入数据库之前验证数据。我的网站从excel获取数据在sql server中复制此数据。但现在我需要在这之前验证数据 并留下一条包含错误的消息,因为这是数据库结构的问题。 我需要帮助和一些指导。Im新手请有几种方法可以验证数据,根据您的excel文件和流程,您可能需要进行组合。由于最终需要创建一个对象来保存数据,因此可以实现一个简单的解决方案,即利用框架中的System.ComponentModel.DataAnnotations命名空间。这使您可以访问验证属性,如[必需],[电子邮件]

我需要在插入数据库之前验证数据。我的网站从excel获取数据在sql server中复制此数据。但现在我需要在这之前验证数据 并留下一条包含错误的消息,因为这是数据库结构的问题。
我需要帮助和一些指导。Im新手请

有几种方法可以验证数据,根据您的excel文件和流程,您可能需要进行组合。由于最终需要创建一个对象来保存数据,因此可以实现一个简单的解决方案,即利用框架中的
System.ComponentModel.DataAnnotations
命名空间。这使您可以访问验证属性,如
[必需]
[电子邮件]
,等等(您也可以扩展和创建自定义验证)

简单解决方案(利用框架):这基本上是MVC、EF和其他框架在添加属性时所做的事情

   private Tuple<bool, IEnumerable<ValidationResult>> ValidateAnnotations(object model)
   {
            var context = new ValidationContext(model, serviceProvider: null, items: null);
            var validationResult = new List<ValidationResult>();
            var isValid = Validator.TryValidateObject(model, context, validationResult, validateAllProperties: true);

            return new Tuple<bool, IEnumerable<ValidationResult>>(isValid, validationResult);
   }
私有元组验证符号(对象模型)
{
var context=新的ValidationContext(模型,serviceProvider:null,items:null);
var validationResult=新列表();
var isValid=Validator.TryValidateObject(模型、上下文、validationResult、validateAllProperties:true);
返回新元组(isValid,validationResult);
}
注意:这是处理手动验证和属性驱动验证的另一种方法


在流程方面;从excel解析后,您基本上可以验证每一行数据,并生成sql insert的有效条目列表和错误报告的无效条目列表。

您是否尝试编写从excel读取数据和将数据插入数据库之间运行的come代码?那代码是怎么不按预期工作的?首先,你尝试了什么?您可以将文件导入C#如果文件较小或较大,您可以导入到暂存表中,在那里进行验证(甚至将错误追加到每一行),然后将错误保存或发布回站点。当您保存它们时,从暂存表中取出并保存到真实表中,您要验证什么?数据是否采用特定格式?它不包含顽皮的词语?具体说明你在做什么。我还没有尝试过任何东西,我想听听建议,选择最好的选择。Excel文件包含文本和数字字段以及大约1000条记录。例如如果有人在列名(varchar)中输入了一个数字,我需要在复制到数据库之前验证它并告诉用户。那么您必须编写一些代码来完成这一点。如果您不介意额外的依赖项,您也可以使用类似的包,该包工作得非常好,但您可以选择将模型和验证分离到何处。这使您可以根据业务规则灵活地为单个模型提供多个验证。thnks,我会试试