Beispiel #1
0
        private static SqlTypeProvider GetDefaultSqlTypeProvider(this Column column)
        {
            SqlTypeProvider result;

            if (s_defaultSqlTypeProviders.TryGetValue(column.DataType, out result))
            {
                return(result);
            }

            var columnType     = column.GetType();
            var columnDataType = column.DataType;
            var enumType       = columnDataType.GenericTypeArguments[0];

            if (columnType.IsDerivedFromGeneric(typeof(_ByteEnum <>)))
            {
                var methodInfo = typeof(ColumnExtensions).GetStaticMethodInfo(nameof(GetByteEnumColumnDescriptorProvider));
                return(s_defaultSqlTypeProviders.GetOrAdd(columnType, BuildSqlTypeProviderFactory(methodInfo, enumType)));
            }

            if (columnType.IsDerivedFromGeneric(typeof(_CharEnum <>)))
            {
                var methodInfo = typeof(ColumnExtensions).GetStaticMethodInfo(nameof(GetCharEnumColumnDescriptorProvider));
                return(s_defaultSqlTypeProviders.GetOrAdd(columnType, BuildSqlTypeProviderFactory(methodInfo, enumType)));
            }

            if (columnType.IsDerivedFromGeneric(typeof(_Int16Enum <>)))
            {
                var methodInfo = typeof(ColumnExtensions).GetStaticMethodInfo(nameof(GetInt16EnumColumnDescriptorProvider));
                return(s_defaultSqlTypeProviders.GetOrAdd(columnType, BuildSqlTypeProviderFactory(methodInfo, enumType)));
            }

            if (columnType.IsDerivedFromGeneric(typeof(_Int32Enum <>)))
            {
                var methodInfo = typeof(ColumnExtensions).GetStaticMethodInfo(nameof(GetInt32EnumColumnDescriptorProvider));
                return(s_defaultSqlTypeProviders.GetOrAdd(columnType, BuildSqlTypeProviderFactory(methodInfo, enumType)));
            }

            if (columnType.IsDerivedFromGeneric(typeof(_Int64Enum <>)))
            {
                var methodInfo = typeof(ColumnExtensions).GetStaticMethodInfo(nameof(GetInt64EnumColumnDescriptorProvider));
                return(s_defaultSqlTypeProviders.GetOrAdd(columnType, BuildSqlTypeProviderFactory(methodInfo, enumType)));
            }

            throw new NotSupportedException(DiagnosticMessages.ColumnTypeNotSupported(column.GetType()));
        }
Beispiel #2
0
 public void Resources_correctly_embeded()
 {
     Assert.IsNotNull(DiagnosticMessages.ColumnTypeNotSupported(typeof(_String)));
 }