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

推荐订阅源

人人都是产品经理
人人都是产品经理
博客园_首页
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
小众软件
小众软件
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub 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 }