private static TableMap Create(Type type, IDefaultsGetter defaults)
 {
     var sqlDbType = default(SqlDbType);
     var columns = from property in type.GetProperties()
                   let propertyType = property.PropertyType
                   where defaults.TryGetSqlDbType(propertyType, out sqlDbType)
                       let parameterDefaults = defaults.GetParameterDefaults(sqlDbType)
                       select new ColumnMap
                           {
                               ColumnMaxLength = parameterDefaults.MaxLength,
                               ColumnName = property.Name,
                               ColumnPrecision = parameterDefaults.Precision,
                               ColumnScale = parameterDefaults.Scale,
                               ColumnType = sqlDbType,
                               IsGenerated = false,
                               IsNullable = false,
                               IsPrimaryKey = false,
                               PropertyName = property.Name,
                               PropertyType = propertyType,
                               Serializer = defaults.GetSerializerOrNull(propertyType, sqlDbType)
                           };
     return new TableMap
         {
             Columns = columns.ToList(),
             Schema = "dbo",
             Table = type.Name,
             Type = type
         };
 }
 public TableMap GetOrCreate(Type type, IDefaultsGetter defaults)
 {
     TableMap tableMap;
     return _dictionary.TryGetValue(type, out tableMap)
                  ? tableMap
                  : Create(type, defaults);
 }