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

时间:2012-05-09 20:54:37

标签: c# asp.net-mvc-3 entity-framework

我在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" ...不确定这是否可靠。

是否可以为字段设置属性,以便在失败时我可以获得该字段的错误描述?我愿意接受建议。

2 个答案:

答案 0 :(得分:0)

听起来你需要使用Exception.Data。更多信息可以在这里找到:

http://msdn.microsoft.com/en-us/library/system.exception.data.aspx

答案 1 :(得分:0)

将有问题的代码放在try catch块中。在catch部分的某处设置断点。然后添加一个名为 ModelState 的观察项目。

ModelState.IsValid 会告诉您模型是否有效(或错误)。

ModelState.Keys 会显示模型包含的字段列表。

ModelState.Values 将显示每个相应字段的数据值。深入研究每个节点,您将看到错误节点,其中包含该数据项中有多少错误的计数。寻找错误超过0的那个。记下其索引,然后返回 ModelState.Keys [索引注释] 以查看导致错误的字段。

说实话,一旦你到目前为止,你将获得所需的所有信息,以解决任何此类错误。我会告诉你的。