mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 增加 FreeSqlBuilder UseSeedData 设定 CodeFirst 种子数据;
This commit is contained in:
		@@ -690,20 +690,6 @@
 | 
			
		||||
            <param name="value">true:运行时检查自动同步结构, false:不同步结构</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSyncStructureToLower(System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            转小写同步结构
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="value">true:转小写, false:不转</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSyncStructureToUpper(System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            转大写同步结构
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="value">true:转大写, false:不转</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseConfigEntityFromDbFirst(System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            将数据库的主键、自增、索引设置导入,适用 DbFirst 模式,无须在实体类型上设置 [Column(IsPrimary)] 或者 ConfigEntity。此功能目前可用于 mysql/sqlserver/postgresql/oracle。<para></para>
 | 
			
		||||
@@ -746,6 +732,36 @@
 | 
			
		||||
            <param name="executed">执行后,可监视执行性能</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseNameConvert(FreeSql.Internal.NameConvertType)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para>
 | 
			
		||||
            优先级小于 [Table(Name = "xxx")]、[Column(Name = "xxx")]
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="convertType"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSeedData(System.Action{FreeSql.FreeSqlBuilder.SeedDataBuilder})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            CodeFirst 初始化种子数据<para></para>
 | 
			
		||||
            表数据为空时,创建设定的种子数据
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="sd"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSyncStructureToLower(System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            转小写同步结构
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="value">true:转小写, false:不转</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseSyncStructureToUpper(System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            转大写同步结构
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="value">true:转大写, false:不转</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseEntityPropertyNameConvert(FreeSql.Internal.StringConvertType)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            自动转换实体属性名称 Entity Property -> Db Filed
 | 
			
		||||
@@ -755,14 +771,6 @@
 | 
			
		||||
            <param name="convertType"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.FreeSqlBuilder.UseNameConvert(FreeSql.Internal.NameConvertType)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para>
 | 
			
		||||
            优先级小于 [Table(Name = "xxx")]、[Column(Name = "xxx")]
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="convertType"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IDelete`1.WithTransaction(System.Data.Common.DbTransaction)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            指定事务对象
 | 
			
		||||
@@ -2309,137 +2317,6 @@
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="readerHander"></param>
 | 
			
		||||
            <param name="cmdType"></param>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteReaderAsync(System.Func{System.Data.Common.DbDataReader,System.Threading.Tasks.Task},System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询,ExecuteReaderAsync(dr => {}, "select * from user where age > ?age", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteArrayAsync(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询,ExecuteArrayAsync("select * from user where age > ?age", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteDataSetAsync(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询,ExecuteDataSetAsync("select * from user where age > ?age; select 2", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteDataTableAsync(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            查询,ExecuteDataTableAsync("select * from user where age > ?age", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            在【主库】执行
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdType"></param>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteNonQueryAsync(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            在【主库】执行,ExecuteNonQueryAsync("delete from user where age > ?age", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            在【主库】执行
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdType"></param>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.ExecuteScalarAsync(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            在【主库】执行,ExecuteScalarAsync("select 1 from user where age > ?age", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.QueryAsync``1(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new SqlParameter { ParameterName = "age", Value = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <typeparam name="T"></typeparam>
 | 
			
		||||
            <param name="cmdType"></param>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.QueryAsync``1(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            执行SQL返回对象集合,QueryAsync<User>("select * from user where age > ?age", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <typeparam name="T"></typeparam>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.QueryAsync``2(System.Data.CommandType,System.String,System.Data.Common.DbParameter[])">
 | 
			
		||||
            <summary>
 | 
			
		||||
            执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <typeparam name="T1"></typeparam>
 | 
			
		||||
            <param name="cmdType"></param>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="cmdParms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.IAdo.QueryAsync``2(System.String,System.Object)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            执行SQL返回对象集合,Query<User>("select * from user where age > ?age; select * from address", new { age = 25 })
 | 
			
		||||
            </summary>
 | 
			
		||||
            <typeparam name="T1"></typeparam>
 | 
			
		||||
            <param name="cmdText"></param>
 | 
			
		||||
            <param name="parms"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="E:FreeSql.IAop.ParseExpression">
 | 
			
		||||
            <summary>
 | 
			
		||||
            可自定义解析表达式
 | 
			
		||||
@@ -2963,12 +2840,6 @@
 | 
			
		||||
            <param name="timeout">超时</param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.Internal.ObjectPool.IObjectPool`1.GetAsync">
 | 
			
		||||
            <summary>
 | 
			
		||||
            获取资源
 | 
			
		||||
            </summary>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.Internal.ObjectPool.IObjectPool`1.Return(FreeSql.Internal.ObjectPool.Object{`0},System.Boolean)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            使用完毕后,归还资源
 | 
			
		||||
@@ -3039,12 +2910,6 @@
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="obj">资源对象</param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.Internal.ObjectPool.IPolicy`1.OnGetAsync(FreeSql.Internal.ObjectPool.Object{`0})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            从对象池获取对象成功的时候触发,通过该方法统计或初始化对象
 | 
			
		||||
            </summary>
 | 
			
		||||
            <param name="obj">资源对象</param>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.Internal.ObjectPool.IPolicy`1.OnReturn(FreeSql.Internal.ObjectPool.Object{`0})">
 | 
			
		||||
            <summary>
 | 
			
		||||
            归还对象给对象池的时候触发
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,5 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Data.Common;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
@@ -7,7 +8,7 @@ using FreeSql.Internal;
 | 
			
		||||
 | 
			
		||||
namespace FreeSql
 | 
			
		||||
{
 | 
			
		||||
    public class FreeSqlBuilder
 | 
			
		||||
    public partial class FreeSqlBuilder
 | 
			
		||||
    {
 | 
			
		||||
        DataType _dataType;
 | 
			
		||||
        string _masterConnectionString;
 | 
			
		||||
@@ -79,28 +80,6 @@ namespace FreeSql
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 转小写同步结构
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="value">true:转小写, false:不转</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert(NameConvertType.ToLower),或者 fsql.CodeFirst.IsSyncStructureToLower = value")]
 | 
			
		||||
        public FreeSqlBuilder UseSyncStructureToLower(bool value)
 | 
			
		||||
        {
 | 
			
		||||
            _isSyncStructureToLower = value;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 转大写同步结构
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="value">true:转大写, false:不转</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert(NameConvertType.ToUpper),或者 fsql.CodeFirst.IsSyncStructureToUpper = value")]
 | 
			
		||||
        public FreeSqlBuilder UseSyncStructureToUpper(bool value)
 | 
			
		||||
        {
 | 
			
		||||
            _isSyncStructureToUpper = value;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 将数据库的主键、自增、索引设置导入,适用 DbFirst 模式,无须在实体类型上设置 [Column(IsPrimary)] 或者 ConfigEntity。此功能目前可用于 mysql/sqlserver/postgresql/oracle。<para></para>
 | 
			
		||||
        /// 本功能会影响 IFreeSql 首次访问的速度。<para></para>
 | 
			
		||||
        /// 若使用 CodeFirst 创建索引后,又直接在数据库上建了索引,若无本功能下一次 CodeFirst 迁移时数据库上创建的索引将被删除
 | 
			
		||||
@@ -159,20 +138,6 @@ namespace FreeSql
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 自动转换实体属性名称 Entity Property -> Db Filed
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// *不会覆盖 [Column] 特性设置的Name
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="convertType"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert 功能")]
 | 
			
		||||
        public FreeSqlBuilder UseEntityPropertyNameConvert(StringConvertType convertType)
 | 
			
		||||
        {
 | 
			
		||||
            _entityPropertyConvertType = convertType;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 实体类名 -> 数据库表名,命名转换(类名、属性名都生效)<para></para>
 | 
			
		||||
        /// 优先级小于 [Table(Name = "xxx")]、[Column(Name = "xxx")]
 | 
			
		||||
@@ -276,32 +241,7 @@ namespace FreeSql
 | 
			
		||||
                        _aopCommandExecuted?.Invoke(e.Command, e.Log);
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                //添加实体属性名全局AOP转换处理
 | 
			
		||||
                if (_entityPropertyConvertType != StringConvertType.None)
 | 
			
		||||
                {
 | 
			
		||||
                    string PascalCaseToUnderScore(string str) => string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString()));
 | 
			
		||||
 | 
			
		||||
                    switch (_entityPropertyConvertType)
 | 
			
		||||
                    {
 | 
			
		||||
                        case StringConvertType.Lower:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToLower();
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.Upper:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToUpper();
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.PascalCaseToUnderscore:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name);
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.PascalCaseToUnderscoreWithLower:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToLower();
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.PascalCaseToUnderscoreWithUpper:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToUpper();
 | 
			
		||||
                            break;
 | 
			
		||||
                        default:
 | 
			
		||||
                            break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                this.EntityPropertyNameConvert(ret);
 | 
			
		||||
                //添加实体属性名全局AOP转换处理
 | 
			
		||||
                if (_nameConvertType != NameConvertType.None)
 | 
			
		||||
                {
 | 
			
		||||
@@ -362,9 +302,70 @@ namespace FreeSql
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                //SeedData
 | 
			
		||||
                if (_seedData != null && _seedData._data.Any())
 | 
			
		||||
                {
 | 
			
		||||
                    ret.Aop.SyncStructureAfter += new EventHandler<Aop.SyncStructureAfterEventArgs>((s, e) =>
 | 
			
		||||
                    {
 | 
			
		||||
                        if (string.IsNullOrEmpty(e.Sql)) return;
 | 
			
		||||
                        foreach (var et in e.EntityTypes)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (_seedData._data.TryGetValue(et, out var sd) == false) continue;
 | 
			
		||||
                            if (sd.Any() == false) continue;
 | 
			
		||||
                            if (ret.Select<object>().AsType(et).Any()) continue;
 | 
			
		||||
                            ret.Insert<object>()
 | 
			
		||||
                                .AsType(et)
 | 
			
		||||
                                .NoneParameter()
 | 
			
		||||
                                .InsertIdentity()
 | 
			
		||||
                                .AppendData(sd.ToArray())
 | 
			
		||||
                                .ExecuteAffrows();
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
 | 
			
		||||
                    foreach (var sd in _seedData._data)
 | 
			
		||||
                    {
 | 
			
		||||
                        ret.CodeFirst.SyncStructure(sd.Key);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return ret;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public class SeedDataBuilder
 | 
			
		||||
        {
 | 
			
		||||
            internal Dictionary<Type, List<object>> _data = new Dictionary<Type, List<object>>();
 | 
			
		||||
            public SeedDataBuilder Apply<T>(T data) where T : class
 | 
			
		||||
            {
 | 
			
		||||
                if (_data.TryGetValue(typeof(T), out var ds) == false)
 | 
			
		||||
                    _data.Add(typeof(T), ds = new List<object>());
 | 
			
		||||
                ds.Add(data);
 | 
			
		||||
                return this;
 | 
			
		||||
            }
 | 
			
		||||
            public SeedDataBuilder Apply<T>(T[] data) where T : class
 | 
			
		||||
            {
 | 
			
		||||
                return this.Apply(data as IEnumerable<T>);
 | 
			
		||||
            }
 | 
			
		||||
            public SeedDataBuilder Apply<T>(IEnumerable<T> data) where T : class
 | 
			
		||||
            {
 | 
			
		||||
                foreach (var d in data) this.Apply(d);
 | 
			
		||||
                return this;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        SeedDataBuilder _seedData;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// CodeFirst 初始化种子数据<para></para>
 | 
			
		||||
        /// 表数据为空时,创建设定的种子数据
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="sd"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public FreeSqlBuilder UseSeedData(Action<SeedDataBuilder> sd)
 | 
			
		||||
        {
 | 
			
		||||
            _seedData = new SeedDataBuilder();
 | 
			
		||||
            sd?.Invoke(_seedData);
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										80
									
								
								FreeSql/FreeSqlBuilder_Obsolete.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								FreeSql/FreeSqlBuilder_Obsolete.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Data.Common;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using FreeSql.DataAnnotations;
 | 
			
		||||
using FreeSql.Internal;
 | 
			
		||||
 | 
			
		||||
namespace FreeSql
 | 
			
		||||
{
 | 
			
		||||
    partial class FreeSqlBuilder
 | 
			
		||||
    {
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 转小写同步结构
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="value">true:转小写, false:不转</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert(NameConvertType.ToLower),或者 fsql.CodeFirst.IsSyncStructureToLower = value")]
 | 
			
		||||
        public FreeSqlBuilder UseSyncStructureToLower(bool value)
 | 
			
		||||
        {
 | 
			
		||||
            _isSyncStructureToLower = value;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 转大写同步结构
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="value">true:转大写, false:不转</param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert(NameConvertType.ToUpper),或者 fsql.CodeFirst.IsSyncStructureToUpper = value")]
 | 
			
		||||
        public FreeSqlBuilder UseSyncStructureToUpper(bool value)
 | 
			
		||||
        {
 | 
			
		||||
            _isSyncStructureToUpper = value;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 自动转换实体属性名称 Entity Property -> Db Filed
 | 
			
		||||
        /// <para></para>
 | 
			
		||||
        /// *不会覆盖 [Column] 特性设置的Name
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="convertType"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [Obsolete("请使用 UseNameConvert 功能")]
 | 
			
		||||
        public FreeSqlBuilder UseEntityPropertyNameConvert(StringConvertType convertType)
 | 
			
		||||
        {
 | 
			
		||||
            _entityPropertyConvertType = convertType;
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void EntityPropertyNameConvert(IFreeSql fsql)
 | 
			
		||||
        {
 | 
			
		||||
            //添加实体属性名全局AOP转换处理
 | 
			
		||||
            if (_entityPropertyConvertType != StringConvertType.None)
 | 
			
		||||
            {
 | 
			
		||||
                string PascalCaseToUnderScore(string str) => string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString()));
 | 
			
		||||
 | 
			
		||||
                switch (_entityPropertyConvertType)
 | 
			
		||||
                {
 | 
			
		||||
                    case StringConvertType.Lower:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToLower();
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.Upper:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = e.Property.Name.ToUpper();
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.PascalCaseToUnderscore:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name);
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.PascalCaseToUnderscoreWithLower:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToLower();
 | 
			
		||||
                        break;
 | 
			
		||||
                    case StringConvertType.PascalCaseToUnderscoreWithUpper:
 | 
			
		||||
                        fsql.Aop.ConfigEntityProperty += (_, e) => e.ModifyResult.Name = PascalCaseToUnderScore(e.Property.Name).ToUpper();
 | 
			
		||||
                        break;
 | 
			
		||||
                    default:
 | 
			
		||||
                        break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user