获取导致实体框架中保存更改异常的字段

本文关键字:保存更改 异常 字段 框架 实体 获取 | 更新日期: 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[索引注释]以查看导致错误的字段。

老实说,一旦你走到了这一步,你就将拥有整理任何此类错误所需的所有信息。 我会留给你知道的。