Example #1
0
 /// <summary>
 /// 应用
 /// </summary>
 /// <param name="propertyBuilder">属性创建器</param>
 /// <param name="name">名称</param>
 /// <param name="annotation">注解</param>
 /// <param name="oldAnnotation">原来的注解</param>
 /// <returns></returns>
 public override Annotation Apply(InternalPropertyBuilder propertyBuilder, string name, Annotation annotation, Annotation oldAnnotation)
 {
     if (name == OracleAnnotationNames.ValueGenerationStrategy)
     {
         propertyBuilder.ValueGenerated(GetValueGenerated(propertyBuilder.Metadata), ConfigurationSource.Convention);
         return(annotation);
     }
     return(base.Apply(propertyBuilder, name, annotation, oldAnnotation));
 }
        ///<inheritdoc />
        public InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder)
        {
            if (propertyBuilder.Metadata.Name == ConcurrencyStampPropertyName)
            {
                propertyBuilder.ValueGenerated(ValueGenerated.OnAddOrUpdate, ConfigurationSource.Convention);
                propertyBuilder.IsConcurrencyToken(true, ConfigurationSource.Convention);
            }

            return propertyBuilder;
        }
Example #3
0
        public override InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder, TimestampAttribute attribute, PropertyInfo clrProperty)
        {
            Check.NotNull(propertyBuilder, nameof(propertyBuilder));
            Check.NotNull(attribute, nameof(attribute));
            Check.NotNull(clrProperty, nameof(clrProperty));

            propertyBuilder.ValueGenerated(ValueGenerated.OnAddOrUpdate, ConfigurationSource.DataAnnotation);
            propertyBuilder.IsConcurrencyToken(true, ConfigurationSource.DataAnnotation);

            return(propertyBuilder);
        }
        public virtual Annotation Apply(InternalPropertyBuilder propertyBuilder, string name, Annotation annotation, Annotation oldAnnotation)
        {
            var property = propertyBuilder.Metadata;

            if (name == RelationalAnnotationNames.DefaultValue ||
                name == RelationalAnnotationNames.DefaultValueSql ||
                name == RelationalAnnotationNames.ComputedColumnSql)
            {
                propertyBuilder.ValueGenerated(GetValueGenerated(property), ConfigurationSource.Convention);
            }

            return(annotation);
        }
Example #5
0
        public virtual Annotation Apply(InternalPropertyBuilder propertyBuilder, string name, Annotation annotation, Annotation oldAnnotation)
        {
            var property = propertyBuilder.Metadata;

            if (name == CypherAnnotationNames.DefaultValue ||
                name == CypherAnnotationNames.DefaultStorageConstraint ||
                name == CypherAnnotationNames.ComputedStorageConstraint)
            {
                propertyBuilder.ValueGenerated(GetValueGenerated(property), ConfigurationSource.Convention);
            }

            return(annotation);
        }
        public override InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder, DatabaseGeneratedAttribute attribute, MemberInfo clrMember)
        {
            FbValueGenerationStrategy?valueGenerationStrategy = null;
            ValueGenerated            valueGenerated          = ValueGenerated.Never;

            if (attribute.DatabaseGeneratedOption == DatabaseGeneratedOption.Identity)
            {
                valueGenerated          = ValueGenerated.OnAdd;
                valueGenerationStrategy = FbValueGenerationStrategy.IdentityColumn;
            }

            propertyBuilder.ValueGenerated(valueGenerated, ConfigurationSource.Convention);
            propertyBuilder.Firebird(ConfigurationSource.DataAnnotation).ValueGenerationStrategy(valueGenerationStrategy);
            return(base.Apply(propertyBuilder, attribute, clrMember));
        }
Example #7
0
        public override InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder, TimestampAttribute attribute)
        {
            Check.NotNull(propertyBuilder, nameof(propertyBuilder));
            Check.NotNull(attribute, nameof(attribute));

            if (propertyBuilder.Metadata.ClrType != typeof(byte[]))
            {
                throw new InvalidOperationException(Strings.TimestampAttributeOnNonBinary(propertyBuilder.Metadata.Name));
            }

            propertyBuilder.ValueGenerated(ValueGenerated.OnAddOrUpdate, ConfigurationSource.DataAnnotation);
            propertyBuilder.ConcurrencyToken(true, ConfigurationSource.DataAnnotation);

            return(propertyBuilder);
        }
Example #8
0
        /// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public override InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder, DatabaseGeneratedAttribute attribute, PropertyInfo clrProperty)
        {
            Check.NotNull(propertyBuilder, nameof(propertyBuilder));
            Check.NotNull(attribute, nameof(attribute));

            var valueGenerated =
                attribute.DatabaseGeneratedOption == DatabaseGeneratedOption.Identity
                    ? ValueGenerated.OnAdd
                    : attribute.DatabaseGeneratedOption == DatabaseGeneratedOption.Computed
                        ? ValueGenerated.OnAddOrUpdate
                        : ValueGenerated.Never;

            propertyBuilder.ValueGenerated(valueGenerated, ConfigurationSource.DataAnnotation);

            return(propertyBuilder);
        }
        /// <summary>
        ///     This is an internal API that supports the Entity Framework Core infrastructure and not subject to
        ///     the same compatibility standards as public APIs. It may be changed or removed without notice in
        ///     any release. You should only use it directly in your code with extreme caution and knowing that
        ///     doing so can result in application failures when updating to a new Entity Framework Core release.
        /// </summary>
        public virtual Annotation Apply(
            InternalPropertyBuilder propertyBuilder, string name, Annotation annotation, Annotation oldAnnotation)
        {
            var property = propertyBuilder.Metadata;

            switch (name)
            {
            case RelationalAnnotationNames.DefaultValue:
            case RelationalAnnotationNames.DefaultValueSql:
            case RelationalAnnotationNames.ComputedColumnSql:
                propertyBuilder.ValueGenerated(GetValueGenerated(property), ConfigurationSource.Convention);
                break;
            }

            return(annotation);
        }
Example #10
0
        public virtual Annotation Apply(InternalPropertyBuilder propertyBuilder, string name, Annotation annotation, Annotation oldAnnotation)
        {
            var property            = propertyBuilder.Metadata;
            var providerAnnotations = (AnnotationProvider.For(property) as RelationalPropertyAnnotations)
                                      ?.ProviderFullAnnotationNames;

            if (name == RelationalFullAnnotationNames.Instance.DefaultValue ||
                name == RelationalFullAnnotationNames.Instance.DefaultValueSql ||
                name == RelationalFullAnnotationNames.Instance.ComputedColumnSql ||
                (providerAnnotations != null &&
                 (name == providerAnnotations.DefaultValue ||
                  name == providerAnnotations.DefaultValueSql ||
                  name == providerAnnotations.ComputedColumnSql)))
            {
                propertyBuilder.ValueGenerated(GetValueGenerated(property), ConfigurationSource.Convention);
            }

            return(annotation);
        }
Example #11
0
        private static void MarkComplexTypes(InternalModelBuilder internalModelBuilder)
        {
            IEnumerable <EntityType> complexEntityTypes = internalModelBuilder
                                                          .Metadata
                                                          .GetEntityTypes()
                                                          .Where(entityType => IsComplexType(entityType) &&
                                                                 entityType.GetDerivedTypes().All(IsComplexType))
                                                          .ToList();

            foreach (EntityType complexEntityType in complexEntityTypes)
            {
                complexEntityType.MongoDb().IsComplexType = true;

                if (complexEntityType.BaseType == null)
                {
                    InternalEntityTypeBuilder internalEntityTypeBuilder = complexEntityType.Builder;
                    InternalPropertyBuilder   primaryKeyProperty        = internalEntityTypeBuilder
                                                                          .Property(
                        $"{complexEntityType.Name}TempId",
                        typeof(int),
                        ConfigurationSource.Convention);
                    primaryKeyProperty.ValueGenerated(ValueGenerated.OnAdd, ConfigurationSource.Convention);
                    internalEntityTypeBuilder.PrimaryKey(
                        new[] { primaryKeyProperty.Metadata.Name },
                        ConfigurationSource.Convention);
                }

                IEnumerable <ForeignKey> referencingForeignKeys = internalModelBuilder
                                                                  .Metadata
                                                                  .GetEntityTypes()
                                                                  .SelectMany(entityType => entityType.GetForeignKeys())
                                                                  .Where(foreignKey => foreignKey.PrincipalToDependent?.GetTargetType() == complexEntityType)
                                                                  .Concat(complexEntityType.GetReferencingForeignKeys())
                                                                  .ToList();

                foreach (ForeignKey referencingForeignKey in referencingForeignKeys)
                {
                    referencingForeignKey.IsOwnership = true;
                }
            }
        }
Example #12
0
        public override InternalPropertyBuilder Apply(InternalPropertyBuilder propertyBuilder, DatabaseGeneratedAttribute attribute, MemberInfo clrMember)
        {
            MySqlValueGenerationStrategy?valueGenerationStrategy = null;
            var valueGenerated = ValueGenerated.Never;

            if (attribute.DatabaseGeneratedOption == DatabaseGeneratedOption.Computed)
            {
                valueGenerated          = ValueGenerated.OnAddOrUpdate;
                valueGenerationStrategy = MySqlValueGenerationStrategy.ComputedColumn;
            }
            else if (attribute.DatabaseGeneratedOption == DatabaseGeneratedOption.Identity)
            {
                valueGenerated          = ValueGenerated.OnAdd;
                valueGenerationStrategy = MySqlValueGenerationStrategy.IdentityColumn;
            }

            propertyBuilder.ValueGenerated(valueGenerated, ConfigurationSource.Convention);
            propertyBuilder.MySql(ConfigurationSource.DataAnnotation).ValueGenerationStrategy(valueGenerationStrategy);

            return(base.Apply(propertyBuilder, attribute, clrMember));
        }
 private void ApplyCreator(InternalPropertyBuilder propertyBuilder)
 {
     if (propertyBuilder.Metadata.Name != EntityFrameworkDefault.Creator) return;
     propertyBuilder.HasValueGenerator(Create, ConfigurationSource.Convention);
     propertyBuilder.ValueGenerated(ValueGenerated.OnAdd, ConfigurationSource.Convention);
 }
 private void ApplyModifier(InternalPropertyBuilder propertyBuilder)
 {
     if (EntityFrameworkDefault.Modifier != propertyBuilder.Metadata.Name) return;
     propertyBuilder.HasValueGenerator(Create, ConfigurationSource.Convention);
     propertyBuilder.ValueGenerated(ValueGenerated.OnAddOrUpdate, ConfigurationSource.Convention);
 }
		private void ApplyCreateDate(InternalPropertyBuilder propertyBuilder)
		{
			if (EntityFrameworkDefault.CreateDate != propertyBuilder.Metadata.Name) return;
			propertyBuilder.HasValueGenerator(typeof(DatetimeValueGenerator), ConfigurationSource.Convention);
			propertyBuilder.ValueGenerated(ValueGenerated.OnAddOrUpdate, ConfigurationSource.Convention);
        }