Example #1
0
        private void Initialize(
            ColumnOperation columnOperation,
            IProperty property,
            Type clrType,
            bool isNullable,
            IEnumerable <IAnnotation> migrationsAnnotations,
            bool inline = false,
            IEntityType userDefinedType = null)
        {
            columnOperation.ClrType    = clrType;
            columnOperation.ColumnType = userDefinedType != null?userDefinedType.GetTableName() : property.GetConfiguredColumnType();

            columnOperation.MaxLength     = property.GetMaxLength();
            columnOperation.IsUnicode     = property.IsUnicode();
            columnOperation.IsFixedLength = property.IsFixedLength();
            columnOperation.IsRowVersion  = property.ClrType == typeof(byte[]) &&
                                            property.IsConcurrencyToken &&
                                            property.ValueGenerated == ValueGenerated.OnAddOrUpdate;
            columnOperation.IsNullable = isNullable;

            var defaultValue = userDefinedType != null ? null : GetDefaultValue(property);

            columnOperation.DefaultValue = (defaultValue == DBNull.Value ? null : defaultValue)
                                           ?? (inline || isNullable
                    ? null
                    : userDefinedType != null ? null : GetDefaultValue(columnOperation.ClrType));

            columnOperation.DefaultValueSql   = property.GetDefaultValueSql();
            columnOperation.ComputedColumnSql = property.GetComputedColumnSql();
            columnOperation.Comment           = property.GetComment();
            columnOperation.AddAnnotations(migrationsAnnotations);
        }
        private void Initialize(
            ColumnOperation columnOperation,
            IProperty property,
            Type clrType,
            bool isNullable,
            IEnumerable <IAnnotation> migrationsAnnotations,
            bool inline = false,
            IEntityType userDefinedType = null)
        {
            var columnType = userDefinedType != null?userDefinedType.GetTableName() : property.GetConfiguredColumnType();

            if (property.ClrType.IsList() && !CassandraTypeMappingSource.CLR_TYPE_MAPPINGS.ContainsKey(property.ClrType))
            {
                Type genericType;
                if (clrType.IsGenericType)
                {
                    genericType = clrType.GenericTypeArguments.First();
                }
                else
                {
                    genericType = clrType.GetElementType();
                }

                if (!CassandraTypeMappingSource.CLR_TYPE_MAPPINGS.ContainsKey(genericType))
                {
                    var targetEntityType = property.DeclaringEntityType.GetRootType();
                    var et = targetEntityType.Model.FindEntityType(genericType);
                    columnType = columnType.Replace(genericType.Name, et.GetTableName());
                }
            }

            columnOperation.ClrType       = clrType;
            columnOperation.ColumnType    = columnType;
            columnOperation.MaxLength     = property.GetMaxLength();
            columnOperation.IsUnicode     = property.IsUnicode();
            columnOperation.IsFixedLength = property.IsFixedLength();
            columnOperation.IsRowVersion  = property.ClrType == typeof(byte[]) &&
                                            property.IsConcurrencyToken &&
                                            property.ValueGenerated == ValueGenerated.OnAddOrUpdate;
            columnOperation.IsNullable = isNullable;

            var defaultValue = userDefinedType != null ? null : GetDefaultValue(property);

            columnOperation.DefaultValue = (defaultValue == DBNull.Value ? null : defaultValue)
                                           ?? (inline || isNullable
                    ? null
                    : userDefinedType != null ? null : GetDefaultValue(columnOperation.ClrType));

            columnOperation.DefaultValueSql   = property.GetDefaultValueSql();
            columnOperation.ComputedColumnSql = property.GetComputedColumnSql();
            columnOperation.Comment           = property.GetComment();
            columnOperation.AddAnnotations(migrationsAnnotations);
        }