public static bool ImplementsType()

in DacFxStronglyTypedModel/ModelUtilityMethods.cs [1034:2630]


		public static bool ImplementsType(ModelTypeClass typeClass, Type type)
		{
			if(typeClass == null)
			{
				throw new ArgumentNullException("typeClass");
			}
			else if(type == null)
			{
				throw new ArgumentNullException("type");
			}

			switch(typeClass.Name)
			{
			case "Column":
				if (typeof(TSqlColumn).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlColumn).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlColumn).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlColumn).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlColumn).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlColumn).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlColumn).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TableValuedFunction":
				if (typeof(TSqlTableValuedFunction).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlTableValuedFunction).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTableValuedFunction).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlTableValuedFunction).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTableValuedFunction).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTableValuedFunction).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTableValuedFunction).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlColumnSource).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesIndex).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "ApplicationRole":
				if (typeof(TSqlApplicationRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlApplicationRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlApplicationRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlApplicationRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlApplicationRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlApplicationRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlDatabaseSecurityPrincipal).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Index":
				if (typeof(TSqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesStorage).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Assembly":
				if (typeof(TSqlAssembly).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlAssembly).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlAssembly).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlAssembly).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlAssembly).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlAssembly).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlAssembly).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "AsymmetricKey":
				if (typeof(TSqlAsymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlAsymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlAsymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlAsymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlAsymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "DataType":
				if (typeof(TSqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Certificate":
				if (typeof(TSqlCertificate).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlCertificate).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlCertificate).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlCertificate).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlCertificate).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "CheckConstraint":
				if (typeof(TSqlCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IExtendedPropertyHost).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "ColumnStoreIndex":
				if (typeof(TSqlColumnStoreIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlColumnStoreIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlColumnStoreIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlColumnStoreIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Contract":
				if (typeof(TSqlContract).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlContract).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlContract).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlContract).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlContract).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "DatabaseMirroringLanguageSpecifier":
				if (typeof(TSqlDatabaseMirroringLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlDatabaseMirroringLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlDatabaseMirroringLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlDatabaseMirroringLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlDatabaseMirroringLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IEndpointLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "DatabaseOptions":
				if (typeof(TSqlDatabaseOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlDatabaseOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlDatabaseOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlDatabaseOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlDatabaseOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlDatabaseOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlDatabaseOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Default":
				if (typeof(TSqlDefault).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlDefault).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlDefault).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlDefault).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlDefault).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlDefault).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "DefaultConstraint":
				if (typeof(TSqlDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IExtendedPropertyHost).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Endpoint":
				if (typeof(TSqlEndpoint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlEndpoint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlEndpoint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlEndpoint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlEndpoint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "ForeignKeyConstraint":
				if (typeof(TSqlForeignKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlForeignKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlForeignKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlForeignKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlForeignKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlForeignKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlForeignKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IExtendedPropertyHost).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "FullTextCatalog":
				if (typeof(TSqlFullTextCatalog).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlFullTextCatalog).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlFullTextCatalog).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlFullTextCatalog).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlFullTextCatalog).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlFullTextCatalog).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "FullTextStopList":
				if (typeof(TSqlFullTextStopList).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlFullTextStopList).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlFullTextStopList).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlFullTextStopList).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlFullTextStopList).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "HttpProtocolSpecifier":
				if (typeof(TSqlHttpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlHttpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlHttpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "MessageType":
				if (typeof(TSqlMessageType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlMessageType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlMessageType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlMessageType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlMessageType).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "PrimaryKeyConstraint":
				if (typeof(TSqlPrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlPrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlPrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlPrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlPrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlPrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlPrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IExtendedPropertyHost).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesStorage).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Queue":
				if (typeof(TSqlQueue).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlQueue).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlQueue).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlQueue).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlQueue).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlColumnSource).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "RemoteServiceBinding":
				if (typeof(TSqlRemoteServiceBinding).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlRemoteServiceBinding).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlRemoteServiceBinding).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlRemoteServiceBinding).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlRemoteServiceBinding).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Role":
				if (typeof(TSqlRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlRole).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlDatabaseSecurityPrincipal).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Route":
				if (typeof(TSqlRoute).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlRoute).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlRoute).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlRoute).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlRoute).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Schema":
				if (typeof(TSqlSchema).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlSchema).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlSchema).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlSchema).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlSchema).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlSchema).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlSchema).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "SearchPropertyList":
				if (typeof(TSqlSearchPropertyList).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlSearchPropertyList).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlSearchPropertyList).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "ServerOptions":
				if (typeof(TSqlServerOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlServerOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlServerOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlServerOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlServerOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlServerOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlServerOptions).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Service":
				if (typeof(TSqlService).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlService).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlService).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlService).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlService).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "ServiceBrokerLanguageSpecifier":
				if (typeof(TSqlServiceBrokerLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlServiceBrokerLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlServiceBrokerLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlServiceBrokerLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlServiceBrokerLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IEndpointLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "SoapLanguageSpecifier":
				if (typeof(TSqlSoapLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlSoapLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlSoapLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IEndpointLanguageSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "SpatialIndex":
				if (typeof(TSqlSpatialIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlSpatialIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlSpatialIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlSpatialIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlSpatialIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlSpatialIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "SymmetricKey":
				if (typeof(TSqlSymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlSymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlSymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlSymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlSymmetricKey).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "Table":
				if (typeof(TSqlTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlColumnSource).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesStorage).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "FileTable":
				if (typeof(TSqlFileTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlFileTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlFileTable).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlColumnSource).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesStorage).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TableType":
				if (typeof(TSqlTableType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTableType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlTableType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTableType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTableType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTableType).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TableTypeCheckConstraint":
				if (typeof(TSqlTableTypeCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTableTypeCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlTableTypeCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTableTypeCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTableTypeCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTableTypeCheckConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ITableTypeConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TableTypeDefaultConstraint":
				if (typeof(TSqlTableTypeDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTableTypeDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlTableTypeDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTableTypeDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTableTypeDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTableTypeDefaultConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ITableTypeConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TableTypeIndex":
				if (typeof(TSqlTableTypeIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTableTypeIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTableTypeIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TableTypePrimaryKeyConstraint":
				if (typeof(TSqlTableTypePrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTableTypePrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlTableTypePrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTableTypePrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTableTypePrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTableTypePrimaryKeyConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ITableTypeConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TableTypeUniqueConstraint":
				if (typeof(TSqlTableTypeUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTableTypeUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlTableTypeUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTableTypeUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTableTypeUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlTableTypeUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ITableTypeConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "TcpProtocolSpecifier":
				if (typeof(TSqlTcpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlTcpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlTcpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlTcpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlTcpProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IProtocolSpecifier).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "UniqueConstraint":
				if (typeof(TSqlUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlUniqueConstraint).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(IExtendedPropertyHost).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesStorage).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "User":
				if (typeof(TSqlUser).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlUser).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlUser).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlUser).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlUser).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlUser).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlUser).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlDatabaseSecurityPrincipal).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "UserDefinedType":
				if (typeof(TSqlUserDefinedType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlUserDefinedType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlUserDefinedType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlUserDefinedType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlUserDefinedType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlUserDefinedType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlUserDefinedType).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlDataType).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "View":
				if (typeof(TSqlView).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlView).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlView).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureTSqlView).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlView).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlView).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlView).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlColumnSource).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISpecifiesIndex).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "XmlIndex":
				if (typeof(TSqlXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "SelectiveXmlIndex":
				if (typeof(TSqlSelectiveXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlSelectiveXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlSelectiveXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlSelectiveXmlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlIndex).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "PromotedNodePathForXQueryType":
				if (typeof(TSqlPromotedNodePathForXQueryType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlPromotedNodePathForXQueryType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlPromotedNodePathForXQueryType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlPromotedNodePathForXQueryType).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlPromotedNodePath).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "PromotedNodePathForSqlType":
				if (typeof(TSqlPromotedNodePathForSqlType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlPromotedNodePathForSqlType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlPromotedNodePathForSqlType).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlPromotedNodePathForSqlType).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlPromotedNodePath).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			case "XmlSchemaCollection":
				if (typeof(TSqlXmlSchemaCollection).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql90TSqlXmlSchemaCollection).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql100TSqlXmlSchemaCollection).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql110TSqlXmlSchemaCollection).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISql120TSqlXmlSchemaCollection).IsAssignableFrom(type))
				{
					return true;
				}
				else if (typeof(ISqlAzureV12TSqlXmlSchemaCollection).IsAssignableFrom(type))
				{
					return true;
				}
				else if(typeof(ISqlSecurable).IsAssignableFrom(type))
				{
					return true;
				}
				// no interfaces mapped.
				return false;
			}
			// no type mapping found 
			return false;
		}