annotate Source/Data/DataException.cs @ 6:11b6da379593

Исправлена странная ошибка при использовании OfType<...>().Where(...)
author cin
date Mon, 05 Dec 2016 05:50:52 +0300
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Runtime.Serialization;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using BLToolkit.Data.DataProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 namespace BLToolkit.Data
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 /// Defines the base class for the namespace exceptions.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 /// This class is the base class for exceptions that may occur during
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 /// execution of the namespace members.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [Serializable]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public class DataException : System.Data.DataException
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 /// Initializes a new instance of the <see cref="DataException"/> class.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 /// <remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 /// This constructor initializes the <see cref="Exception.Message"/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 /// property of the new instance
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 /// to a system-supplied message that describes the error,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 /// such as "BLToolkit Data error has occurred."
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 /// </remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 public DataException()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 : base("A BLToolkit Data error has occurred.")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 /// Initializes a new instance of the <see cref="DataException"/> class
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 /// with the specified error message.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 /// <param name="message">The message to display to the client when the
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 /// exception is thrown.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 /// <seealso cref="Exception.Message"/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 public DataException(string message)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 : base(message)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 /// Initializes a new instance of the <see cref="DataException"/> class
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 /// with the specified error message and InnerException property.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 /// <param name="message">The message to display to the client when the
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 /// exception is thrown.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 /// <param name="innerException">The InnerException, if any, that threw
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 /// the current exception.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 /// <seealso cref="Exception.Message"/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 /// <seealso cref="Exception.InnerException"/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public DataException(string message, Exception innerException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 : base(message, innerException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 /// Initializes a new instance of the <see cref="DataException"/> class
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 /// with the InnerException property.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 /// <param name="innerException">The InnerException, if any, that threw
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 /// the current exception.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 /// <seealso cref="Exception.InnerException"/>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 public DataException(Exception innerException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 : base(innerException.Message, innerException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 /// Initializes a new instance of the <see cref="DataException"/> class
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 /// with serialized data.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 /// <param name="info">The object that holds the serialized object data.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 /// <param name="context">The contextual information about the source or
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 /// destination.</param>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 /// <remarks>This constructor is called during deserialization to
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 /// reconstitute the exception object transmitted over a stream.</remarks>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 protected DataException(SerializationInfo info, StreamingContext context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 : base(info, context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 #region Internal
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 private readonly DbManager _dbManager;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 static string GetMessage(DbManager dbManager, Exception innerException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 var obj = dbManager.DataProvider.Convert(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 innerException, ConvertType.ExceptionToErrorMessage);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 return obj is Exception ? ((Exception)obj).Message : obj.ToString();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 internal DataException(DbManager dbManager, Exception innerException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 : this(GetMessage(dbManager, innerException), innerException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 _dbManager = dbManager;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 #region Public Properties
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 /// <summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 /// Gets a number that identifies the type of error.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 /// </summary>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 public int? Number
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 var innerException = InnerException as DataException;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 if (innerException != null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 return innerException.Number;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 if (_dbManager == null) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 return _dbManager.DataProvider.Convert(InnerException, ConvertType.ExceptionToErrorNumber) as int?;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 public DataExceptionType DataExceptionType
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 if (_dbManager == null || Number == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 return DataExceptionType.Undefined;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 return _dbManager.DataProvider.ConvertErrorNumberToDataExceptionType(Number.Value);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135