1 //------------------------------------------------------------------------------
2 // <copyright file="EDesignUtil.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
6 // @backupOwner Microsoft
7 //------------------------------------------------------------------------------
9 namespace System.Data.Entity.Design.Common {
13 using System.Data.Metadata.Edm;
15 internal static class EDesignUtil {
17 ////////////////////////////////////////////////////////////////////////
18 ////////////////////////////////////////////////////////////////////////
19 ////////////////////////////////////////////////////////////////////////
23 internal static string GetMessagesFromEntireExceptionChain(Exception e)
25 // get the full error message list from the inner exceptions
26 string message = e.Message;
28 for (Exception inner = e.InnerException; inner != null; inner = inner.InnerException)
31 string indent = string.Empty.PadLeft(count, '\t');
32 message += Environment.NewLine + indent;
33 message += inner.Message;
38 static internal T CheckArgumentNull<T>(T value, string parameterName) where T : class
42 throw ArgumentNull(parameterName);
47 static internal void CheckStringArgument(string value, string parameterName)
49 // Throw ArgumentNullException when string is null
50 CheckArgumentNull(value, parameterName);
52 // Throw ArgumentException when string is empty
53 if (value.Length == 0)
55 throw InvalidStringArgument(parameterName);
59 static internal LanguageOption CheckLanguageOptionArgument(LanguageOption value, string paramName)
61 if (value == LanguageOption.GenerateCSharpCode ||
62 value == LanguageOption.GenerateVBCode)
66 throw ArgumentOutOfRange(paramName);
69 static internal ArgumentException SingleStoreEntityContainerExpected(string parameterName)
71 ArgumentException e = new ArgumentException(Strings.SingleStoreEntityContainerExpected, parameterName);
74 static internal ArgumentException InvalidStoreEntityContainer(string entityContainerName, string parameterName)
76 ArgumentException e = new ArgumentException(Strings.InvalidNonStoreEntityContainer(entityContainerName), parameterName);
79 static internal ArgumentException InvalidStringArgument(string parameterName) {
80 ArgumentException e = new ArgumentException(Strings.InvalidStringArgument(parameterName));
84 static internal ArgumentException EdmReservedNamespace(string namespaceName) {
85 ArgumentException e = new ArgumentException(Strings.ReservedNamespace(namespaceName));
89 static internal ArgumentNullException ArgumentNull(string parameter) {
90 ArgumentNullException e = new ArgumentNullException(parameter);
94 static internal ArgumentException Argument(string parameter)
96 ArgumentException e = new ArgumentException(parameter);
100 static internal ArgumentException Argument(string message, Exception inner)
102 ArgumentException e = new ArgumentException(message, inner);
106 static internal InvalidOperationException InvalidOperation(string error)
108 InvalidOperationException e = new InvalidOperationException(error);
113 static internal StrongTypingException StrongTyping(string error, Exception innerException) {
114 StrongTypingException e = new StrongTypingException(error, innerException);
118 static internal StrongTypingException StonglyTypedAccessToNullValue(string columnName, string tableName, Exception innerException) {
119 return StrongTyping(Strings.StonglyTypedAccessToNullValue(columnName, tableName), innerException);
122 static internal InvalidOperationException EntityStoreGeneratorSchemaNotLoaded() {
123 return InvalidOperation(Strings.EntityStoreGeneratorSchemaNotLoaded);
126 static internal InvalidOperationException EntityModelGeneratorSchemaNotLoaded() {
127 return InvalidOperation(Strings.EntityModelGeneratorSchemaNotLoaded);
130 static internal InvalidOperationException NonSerializableType(BuiltInTypeKind kind)
132 return InvalidOperation(Strings.Serialization_UnknownGlobalItem(kind));
135 static internal InvalidOperationException MissingGenerationPatternForType(BuiltInTypeKind kind)
137 return InvalidOperation(Strings.ModelGeneration_UnGeneratableType(kind));
140 static internal ArgumentException InvalidNamespaceNameArgument(string namespaceName)
142 return new ArgumentException(Strings.InvalidNamespaceNameArgument(namespaceName));
145 static internal ArgumentException InvalidEntityContainerNameArgument(string entityContainerName)
147 return new ArgumentException(Strings.InvalidEntityContainerNameArgument(entityContainerName));
150 static internal ArgumentException DuplicateEntityContainerName(string newModelEntityContainerName, string storeEntityContainer)
152 return new ArgumentException(Strings.DuplicateEntityContainerName(newModelEntityContainerName, storeEntityContainer));
155 static internal ProviderIncompatibleException ProviderIncompatible(string message)
157 return new ProviderIncompatibleException(message);
160 static internal ProviderIncompatibleException ProviderIncompatible(string message, Exception inner)
162 return new ProviderIncompatibleException(message, inner);
165 static internal ArgumentOutOfRangeException ArgumentOutOfRange(string paramName)
167 return new ArgumentOutOfRangeException(paramName);
170 internal static void CheckTargetEntityFrameworkVersionArgument(Version targetEntityFrameworkVersion, string parameterName)
172 EDesignUtil.CheckArgumentNull(targetEntityFrameworkVersion, parameterName);
173 if (!EntityFrameworkVersions.IsValidVersion(targetEntityFrameworkVersion))
175 throw EDesignUtil.Argument(parameterName);