Пример #1
0
        public static FbValueGenerationStrategy GetValueGenerationStrategy(this IMutableProperty property)
        {
            var annotation = property[FbAnnotationNames.ValueGenerationStrategy];

            if (annotation != null)
            {
                return((FbValueGenerationStrategy)annotation);
            }

            if (property.ValueGenerated != ValueGenerated.OnAdd ||
                property.GetDefaultValue() != null ||
                property.GetDefaultValueSql() != null ||
                property.GetComputedColumnSql() != null)
            {
                return(FbValueGenerationStrategy.None);
            }

            var modelStrategy = property.DeclaringEntityType.Model.GetValueGenerationStrategy();

            if (modelStrategy == FbValueGenerationStrategy.SequenceTrigger && IsCompatibleSequenceTrigger(property))
            {
                return(FbValueGenerationStrategy.SequenceTrigger);
            }
            if (modelStrategy == FbValueGenerationStrategy.IdentityColumn && IsCompatibleIdentityColumn(property))
            {
                return(FbValueGenerationStrategy.IdentityColumn);
            }

            return(FbValueGenerationStrategy.None);
        }