mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	## v0.9.18
- 增加 PostgreSQL 的 Odbc 访问提供,相比 FreeSql.Provider.PostgreSQL 支持的类型更少; - 增加 通用的 Odbc 访问提供,不能迁移实体到数据库,不能 Skip 这样来分页,理论上能 crud 所有 odbc 数据库;
This commit is contained in:
		@@ -8,6 +8,17 @@ namespace FreeSql
 | 
			
		||||
 | 
			
		||||
        MySql, SqlServer, PostgreSQL, Oracle, Sqlite,
 | 
			
		||||
 | 
			
		||||
        OdbcOracle, OdbcSqlServer, OdbcMySql
 | 
			
		||||
        OdbcOracle, OdbcSqlServer, OdbcMySql, OdbcPostgreSQL,
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 通用的 Odbc 实现,只能做基本的 Crud 操作 <para></para>
 | 
			
		||||
        /// 不支持实体结构迁移、不支持分页(只能 Take 查询) <para></para>
 | 
			
		||||
        /// 
 | 
			
		||||
        /// 通用实现为了让用户自己适配更多的数据库,比如连接 mssql 2000、db2 等数据库<para></para>
 | 
			
		||||
        /// 默认适配 SqlServer,可以继承后重新适配 FreeSql.Odbc.Default.OdbcAdapter,最好去看下代码 <para></para>
 | 
			
		||||
        /// 
 | 
			
		||||
        /// 适配新的 OdbcAdapter,请在 FreeSqlBuilder.Build 之后调用 IFreeSql.SetOdbcAdapter 方法设置
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        Odbc
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
	<PropertyGroup>
 | 
			
		||||
		<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
 | 
			
		||||
		<Version>0.9.17</Version>
 | 
			
		||||
		<Version>0.9.18</Version>
 | 
			
		||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
			
		||||
		<Authors>YeXiangQin</Authors>
 | 
			
		||||
		<Description>FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite.</Description>
 | 
			
		||||
 
 | 
			
		||||
@@ -345,6 +345,15 @@
 | 
			
		||||
            枚举项
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="F:FreeSql.DataType.Odbc">
 | 
			
		||||
            <summary>
 | 
			
		||||
            通用的 Odbc 实现,只能做基本的 Crud 操作 <para></para>
 | 
			
		||||
            不支持实体结构迁移、不支持分页(只能 Take 查询) <para></para>
 | 
			
		||||
            默认适配 SqlServer,可以继承后重新适配 FreeSql.Odbc.Default.OdbcAdapter,最好去看下代码 <para></para>
 | 
			
		||||
            
 | 
			
		||||
            适配新的 OdbcAdapter,请在 FreeSqlBuilder.Build 之后调用 IFreeSql.SetOdbcAdapter 方法设置
 | 
			
		||||
            </summary>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:FreeSql.Extensions.EntityUtil.EntityUtilExtensions.GetEntityKeyString(IFreeSql,System.Type,System.Object,System.Boolean,System.String)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 null
 | 
			
		||||
 
 | 
			
		||||
@@ -178,6 +178,14 @@ namespace FreeSql
 | 
			
		||||
                        type = Type.GetType("FreeSql.Odbc.MySql.OdbcMySqlProvider`1,FreeSql.Provider.Odbc")?.MakeGenericType(typeof(TMark));
 | 
			
		||||
                        if (type == null) throw new Exception("缺少 FreeSql 数据库实现包:FreeSql.Provider.Odbc.dll,可前往 nuget 下载");
 | 
			
		||||
                        break;
 | 
			
		||||
                    case DataType.OdbcPostgreSQL:
 | 
			
		||||
                        type = Type.GetType("FreeSql.Odbc.PostgreSQL.OdbcPostgreSQLProvider`1,FreeSql.Provider.Odbc")?.MakeGenericType(typeof(TMark));
 | 
			
		||||
                        if (type == null) throw new Exception("缺少 FreeSql 数据库实现包:FreeSql.Provider.Odbc.dll,可前往 nuget 下载");
 | 
			
		||||
                        break;
 | 
			
		||||
                    case DataType.Odbc:
 | 
			
		||||
                        type = Type.GetType("FreeSql.Odbc.Default.OdbcProvider`1,FreeSql.Provider.Odbc")?.MakeGenericType(typeof(TMark));
 | 
			
		||||
                        if (type == null) throw new Exception("缺少 FreeSql 数据库实现包:FreeSql.Provider.Odbc.dll,可前往 nuget 下载");
 | 
			
		||||
                        break;
 | 
			
		||||
 | 
			
		||||
                    default: throw new Exception("未指定 UseConnectionString");
 | 
			
		||||
                }
 | 
			
		||||
@@ -202,34 +210,24 @@ namespace FreeSql
 | 
			
		||||
                    switch (_entityPropertyConvertType)
 | 
			
		||||
                    {
 | 
			
		||||
                        case StringConvertType.Lower:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (s, e) =>
 | 
			
		||||
                            {
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) =>
 | 
			
		||||
                                e.ModifyResult.Name = e.Property.Name.ToLower();
 | 
			
		||||
                            };
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.Upper:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (s, e) =>
 | 
			
		||||
                            {
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) =>
 | 
			
		||||
                                e.ModifyResult.Name = e.Property.Name.ToUpper();
 | 
			
		||||
                            };
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.PascalCaseToUnderscore:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (s, e) =>
 | 
			
		||||
                            {
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) =>
 | 
			
		||||
                                e.ModifyResult.Name = StringUtils.PascalCaseToUnderScore(e.Property.Name);
 | 
			
		||||
                            };
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.PascalCaseToUnderscoreWithLower:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (s, e) =>
 | 
			
		||||
                            {
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) =>
 | 
			
		||||
                                e.ModifyResult.Name = StringUtils.PascalCaseToUnderScore(e.Property.Name).ToLower();
 | 
			
		||||
                            };
 | 
			
		||||
                            break;
 | 
			
		||||
                        case StringConvertType.PascalCaseToUnderscoreWithUpper:
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (s, e) =>
 | 
			
		||||
                            {
 | 
			
		||||
                            ret.Aop.ConfigEntityProperty += (_, e) =>
 | 
			
		||||
                                e.ModifyResult.Name = StringUtils.PascalCaseToUnderScore(e.Property.Name).ToUpper();
 | 
			
		||||
                            };
 | 
			
		||||
                            break;
 | 
			
		||||
                        default:
 | 
			
		||||
                            break;
 | 
			
		||||
@@ -258,20 +256,25 @@ namespace FreeSql
 | 
			
		||||
                                switch (ret.Ado.DataType)
 | 
			
		||||
                                {
 | 
			
		||||
                                    case DataType.MySql:
 | 
			
		||||
                                    case DataType.OdbcMySql:
 | 
			
		||||
                                        e.ModifyResult.DbType = tryval > 0 ? $"varchar({tryval})" : "text";
 | 
			
		||||
                                        break;
 | 
			
		||||
                                    case DataType.SqlServer:
 | 
			
		||||
                                    case DataType.OdbcSqlServer:
 | 
			
		||||
                                        e.ModifyResult.DbType = tryval > 0 ? $"nvarchar({tryval})" : "nvarchar(max)";
 | 
			
		||||
                                        break;
 | 
			
		||||
                                    case DataType.PostgreSQL:
 | 
			
		||||
                                    case DataType.OdbcPostgreSQL:
 | 
			
		||||
                                        e.ModifyResult.DbType = tryval > 0 ? $"varchar({tryval})" : "text";
 | 
			
		||||
                                        break;
 | 
			
		||||
                                    case DataType.Oracle:
 | 
			
		||||
                                    case DataType.OdbcOracle:
 | 
			
		||||
                                        e.ModifyResult.DbType = tryval > 0 ? $"nvarchar2({tryval})" : "nvarchar2(4000)";
 | 
			
		||||
                                        break;
 | 
			
		||||
                                    case DataType.Sqlite:
 | 
			
		||||
                                        e.ModifyResult.DbType = tryval > 0 ? $"nvarchar({tryval})" : "text";
 | 
			
		||||
                                        break;
 | 
			
		||||
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ namespace FreeSql.Internal.CommonProvider
 | 
			
		||||
            _commonExpression = commonExpression;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool IsAutoSyncStructure { get; set; } = false;
 | 
			
		||||
        public virtual bool IsAutoSyncStructure { get; set; } = false;
 | 
			
		||||
        public bool IsSyncStructureToLower { get; set; } = false;
 | 
			
		||||
        public bool IsSyncStructureToUpper { get; set; } = false;
 | 
			
		||||
        public bool IsConfigEntityFromDbFirst { get; set; } = false;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user