/// <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)); } } }
/// <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; }
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); }
/// <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; }