对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性。

本文探讨了在使用ADO.NET实体模型时遇到的未处理DbEntityValidationException错误,通过添加命名空间引用并捕获异常,解决了数据写入数据库的问题。通过检查实体属性确保数据一致性,最终实现数据成功写入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。

如有冒犯请联系本人,或删除,或标明出处。

因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。

原文 出处http://blog.youkuaiyun.com/snowinfish/article/details/11567301



在VS2012里建立ADO.NET实体模型写数据的时候,一直提示“未处理DbEntityValidationException”,"对一个或多个实体的验证失败。有关详细信息,请参见“EntityValidationErrors”属性"。

自己测试了下两个实体,主要是“operate911”引起的错误。

上网查资料,参考了下面这篇文章。

《关于如何查看 EntityValidationErrors 详细信息的解决方法》

http://www.cnblogs.com/zhourq/archive/2011/11/03/2234720.html

但是在写异常的时候,系统没有“DbEntityValidationException”,猜测是缺乏命名空间引用。

于是添加了:

[csharp]  view plain copy
  1. using System.Data.Validation;  

对应程序修改为:

[csharp]  view plain copy
  1. try  
  2. {    entities.Operate911.Add(operate911);  
  3.     entities.SaveChanges();  
  4. }  
  5. catch (DbEntityValidationException dbEx)   
  6. {  
  7.   
  8. }  
启动,无异常提示,“operate911”没有将数据写入数据库表。

查看原因是写补充程序的时候,对某一不允许空的列无数据填充,修改之后,启动程序,测试成功。


但是,如果不写异常的话,继续提示最上错误。

而且,“catch (DbEntityValidationException dbEx)”这一句后的参数“dbEx”可以不用写。

继续不明...


09.12补充:

以上try、catch书写不对,没有将异常抛出,更改为:

[csharp]  view plain copy
  1. try  
  2. {      var operateSpt = new OperateSpt(ymd, timeNow, Operate);  
  3.         entities.OperateSpts.Add(operateSpt);  
  4.         entities.SaveChanges();  
  5. }  
  6.   
  7. catch (DbEntityValidationException ex)  
  8. {  
  9.     MessageBox.Show(ex.Message);  
  10. }  

运行结果如下图。


继续不明...


补充:问题解决。

原因:写入的数据与表设定不一致。

我的原因是在某一步的时候,写入的数据为空,但是原表设置为“不允许为空”,所以当进行到这一步操作时会出现异常。

个人太粗心,在查看数据的时候看到其他操作写入了数据,就一直没有想到这个问题。


### 关于 MSSQL 服务失败的原因分析 当 SQL Server (MSSQLSERVER) 的失败服务未能及时响应时,通常可以通过查看事件日志来获取更详细的错误信息[^1]。这些错误可能由多种因素引起,包括但不限于配置问题、权限不足、磁盘空间耗尽以及网络连接异常。 以下是可能导致 MSSQL 服务失败的一些常见原因及其对应的解决方案: #### 原因一:服务未正常启动 如果 MSSQLSERVER 服务本身没有运行,则任何针对该数据库实例的求都会失败。尝试手动启动服务时可能会遇到“服务无法响应”的错误提示。这种情况下可以按照以下方法操作: - 打开 Windows 服务管理器,找到名为 **MSSQLSERVER** 的服务。 - 如果状态显示为已停止,右键点击并选择“启动”。 - 若仍然报错,建议通过命令行工具 `net start` PowerShell 来进一步排查问题。 ```powershell Start-Service -Name 'MSSQLSERVER' ``` #### 原因二:端口冲突防火墙阻止访问 SQL Server 默认监听 TCP/IP 协议上的特定端口号(通常是 1433)。如果有其他程序占用了此端口者本地防火墙规则不允许外部流量进入,则客户端应用程序将无法成功建立连接[^2]。因此需要确认以下几个方面: - 使用 netstat 工具检查是否有进程正在占用目标端口; - 修改 SQL Server 配置管理器中的设置以更改默认端口分配; - 将例外添加到操作系统级别的安全策略里允许传入的数据包到达服务器主机。 #### 原因三:登录认证方式不匹配 另一个常见的问题是身份验证模式不当造成的拒绝访问情况发生。例如,默认安装过程中选择了仅支持Windows Authentication Mode而忽略了Mixed Mode选项的话,那么那些依赖用户名/密码组合形式来进行远程接入的操作就会被拦截下来。要修正这个问题,执行下面步骤之一: - 登录至企业管理控制台,在安全性节点下调整当前活动的身份验证类型; - 编辑注册表项[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\LoginMode],将其数值设为2表示启用混合模式;随后重启关联的服务生效变更。 #### 原因四:资源短缺引发崩溃 除了上述提到的技术层面障碍之外,物理硬件条件也可能成为制约性能表现的重要瓶颈所在之处——比如内存泄漏现象严重致使可用RAM容量急剧下降以至于不足以维持正常的事务处理流程运转下去等等情形均有可能触发类似的症状出现。此时应该着重关注如下几个指标的变化趋势图谱以便快速定位根本症结所在位置: - CPU利用率百分比是否持续处于高位区间? - 物理硬盘剩余存储空间还有多少可供利用? --- ### 提供一段示例脚本用于诊断基本健康状况 为了帮助管理员更加便捷高效地收集必要的调试数据资料集合起来形成统一报告文档样式结构化呈现出来便于后续深入研究探讨具体细节内容部分工作环节自动化程度提升不少效率倍增效果显著可见一斑! ```sql -- 获取关于SQL Server的整体运行时间统计信息 SELECT DATEDIFF(second, create_date, GETDATE()) AS TotalSecondsUp, sqlserver_start_time FROM sys.dm_os_sys_info; -- 查看当前会话列表连同它们各自的状态描述字段一起展示给用户观看学习借鉴参考价值极高哦亲们快来围观吧~ SELECT session_id, status, login_name, host_name, program_name FROM sys.dm_exec_sessions; ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值