获取导致实体框架中保存更改异常的字段
本文关键字:保存更改 异常 字段 框架 实体 获取 | 更新日期: 2023-09-27 18:33:44
我在MVC3中创建了一个REST API,我需要做的一件事是在更新或创建操作失败时返回描述性消息。
像"The update operation failed while creating the customer object."
这样的消息还不够好。
我的下一个想法是从返回如下内容的异常中获取消息:
The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_Business_Category". The conflict occurred in database "MyDb_Dev", table "dbo.Category", column 'CategoryID'.
The statement has been terminated.
这似乎是太多的信息。我可以从异常消息中解析出column "CategoryID"
...不确定这是否可靠。
是否可以为字段设置属性,以便在它们失败时我可以获取该字段错误描述?我愿意接受建议。
听起来你需要
使用Exception.Data。更多信息可以在这里找到:
http://msdn.microsoft.com/en-us/library/system.exception.data.aspx
将有问题的代码放在 try catch 块中。 在捕获部分的某个位置设置断点。 然后添加一个名为 ModelState 的监视项。
ModelState.IsValid将告诉您模型是否有效(或错误)。
ModelState.Keys 将显示模型包含的字段列表。
ModelState.Values 将显示每个相应字段的数据值。 向下钻取到每个节点,您将看到一个"错误"节点,其中包含该数据项中错误数的计数。 查找错误数超过 0 的那个。 记下其索引,然后返回到ModelState.Keys[索引注释]以查看导致错误的字段。
老实说,一旦你走到了这一步,你就将拥有整理任何此类错误所需的所有信息。 我会留给你知道的。