惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
A
About on SuperTechFans
量子位
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
Google DeepMind News
Google DeepMind News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog
U
Unit 42
D
DataBreaches.Net
博客园 - Franky
D
Docker
宝玉的分享
宝玉的分享
Y
Y Combinator Blog
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Hugging Face - Blog
Hugging Face - Blog

博客园 - 彭旭

VNC远程Gnome图形桌面(openEuler 20.03 LTS系统) [WPF]控件应用多个样式 [ASP.NET MVC] Real-time之HTML5 服务器发送事件(server-sent event) [Silverlight]监听指定控件(FrameworkElement)的依赖属性(DependencyProperty)的更改 [Silverlight]键盘钩子KeyboardHook [Chrome扩展]屏蔽Google搜索结果重定向 Linq Distinct扩展 [Winform/C#]点击工作区域移动窗体 [WinForm] C#避免Panel(ScrollableControl)的子控件获取焦点时滚动条自动滚动 C#远程连接Oracle数据库(不安装客户端) RichTextBox.MouseWheel事件控制父控件Panel的内容滚动 ID3v1信息结构(MP3文件)的读取、修改(C#) 在线编辑Office文件 SQL优化 将自然数分解为若干连续的自然数 小写金额转换为大写金额 大数阶乘 查看文件夹大小及占用空间 VS2005开发WAP网站初识 - 彭旭 - 博客园
[WCF]DomainServices客户端操作异常处理
彭旭 · 2014-03-21 · via 博客园 - 彭旭

作为个人备忘,不做排版。此扩展函数用于DomainServices的Load及SubmitChanges时处理Error信息,包括验证消息、实体冲突。

 1 public static string ToErrorString(this System.ServiceModel.DomainServices.Client.OperationBase op)
 2 {
 3     //来自http://www.cnblogs.com/ainijiutian/p/3616198.html
 4     if (op.HasError)
 5     {
 6         op.MarkErrorAsHandled();
 7 
 8         System.Text.StringBuilder sb = new System.Text.StringBuilder();
 9         if (op is System.ServiceModel.DomainServices.Client.LoadOperation)
10         {
11             var lo = op as System.ServiceModel.DomainServices.Client.LoadOperation;
12             if (lo.ValidationErrors != null && lo.ValidationErrors.Any())
13             {
14                 sb.Append("Validation Errors:\r\n" + string.Join("\r\n", lo.ValidationErrors.Select(t => t.ErrorMessage)) + "\r\n\r\n");
15             }
16             sb.Append("Error message:\r\n" + lo.Error.ToString());
17 
18             return sb.ToString();
19         }
20         else if (op is System.ServiceModel.DomainServices.Client.SubmitOperation)
21         {
22             var so = op as System.ServiceModel.DomainServices.Client.SubmitOperation;
23             if (so.EntitiesInError != null && so.EntitiesInError.Any())
24             {
25                 foreach (var e in so.EntitiesInError)
26                 {
27                     sb.Append(so.EntitiesInError.First().GetType() + " " + e.ToString() + ":\r\n");
28                     if (e.HasValidationErrors)
29                     {
30                         sb.Append("Validation Errors:\r\n" + string.Join("\r\n", e.ValidationErrors.Select(t => t.ErrorMessage)) + "\r\n");
31                     }
32                     if (!e.EntityConflict.IsDeleted && e.EntityConflict != null && e.EntityConflict.PropertyNames != null && e.EntityConflict.PropertyNames.Any())
33                     {
34                         sb.Append("Entity conflict:\r\n" + string.Join(", ", e.EntityConflict.PropertyNames) + "\r\n");
35                     }
36                 }
37                 sb.Append("\r\n");
38             }
39             sb.Append("Error message:\r\n" + so.Error.ToString());
40             //if (sb.ToString().Contains("STAMP")) //timestamp
41             //{
42             //    return "Document has been changed in other place,please undo the current changes and reopen .";
43             //}
44             //else
45             //{
46             //    return sb.ToString();
47             //}
48             return sb.ToString();
49         }
50     }
51     return op.ToString();
52 }