/// <summary>
        /// 创建指定数据列提交单元成员。
        /// </summary>
        /// <param name="column">指定数据列。</param>
        /// <param name="generator">值生成对象。</param>
        /// <param name="customExpression">自定义表达式。</param>
        /// <returns>创建结果。</returns>
        protected CommitMember CreateCommitUnitMember(ColumnMetadata column, ValueGenerateBase generator, DbExpression customExpression = null)
        {
            var context = this.GenerateContext;

            if (generator == null)
            {
                if (customExpression != null)
                {
                    return(ReisterReturnMember(new CommitExpressionMember(column, generator, customExpression)));
                }
                else
                {
                    return(new CommitMember(column));
                }
            }
            else
            {
                switch (generator.GeneratedOption)
                {
                case EGeneratedOption.Expression:
                    var expression = generator as ValueGenerateExpression;
                    return(ReisterReturnMember(new CommitExpressionMember(column, generator, context.Translate(expression.Expression))));

                case EGeneratedOption.Database:
                case EGeneratedOption.Identity:
                    return(ReisterReturnMember(new CommitMember(column, generator, ECommitValueType.Database)));

                case EGeneratedOption.Ignore:
                case EGeneratedOption.Memory:
                    if (customExpression != null)
                    {
                        return(ReisterReturnMember(new CommitExpressionMember(column, generator, customExpression)));
                    }
                    else
                    {
                        return(new CommitMember(column));
                    }

                default:
                    throw new NotSupportedException(string.Format(Res.NotSupportedGeneratedOption, generator.GeneratedOption));
                }
            }
        }
Example #2
0
 /// <summary>
 /// 创建提交成员。
 /// </summary>
 /// <param name="metadata">列元数据。</param>
 /// <param name="generator">值生成对象。</param>
 /// <param name="expression">当前值的表达式。</param>
 public CommitExpressionMember(ColumnMetadata metadata, ValueGenerateBase generator, DbExpression expression)
     : base(metadata, generator, ECommitValueType.Expression)
 {
     Expression = expression;
 }
Example #3
0
        private ValueGenerateBase CreateGenerate(GeneratedValueBaseAttribute attr, EGeneratedPurpose purpose, ValueGenerateBase source)
        {
            if (source == null && (attr.GeneratedPurpose & purpose) == purpose)
            {
                switch (attr.GeneratedOption)
                {
                case EGeneratedOption.Ignore: return(IgnoreValueGenerate);

                case EGeneratedOption.Identity: return(new ValueGenerateIdentity());

                case EGeneratedOption.Database: return(new ValueGenerateDatabase());

                case EGeneratedOption.Memory:
                    var memoryAttr = (GeneratedMemoryValueAttribute)attr;
                    return(new ValueGenerateMemory(memoryAttr.GeneratorType));

                case EGeneratedOption.Expression:
                    var expAttr = (GeneratedExpressionAttribute)attr;
                    return(new ValueGenerateExpression(expAttr.Expression));
                }
            }
            return(source);
        }
Example #4
0
 /// <summary>
 /// 创建普通提交成员。
 /// </summary>
 /// <param name="metadata">列元数据。</param>
 /// <param name="gnerator">值生成器。</param>
 /// <param name="columnType">列提交类型。</param>
 public CommitMember(ColumnMetadata metadata, ValueGenerateBase gnerator, ECommitValueType columnType)
 {
     Metadata  = metadata;
     Generator = gnerator;
     ValueType = columnType;
 }