## v0.9.18

- 增加 PostgreSQL 的 Odbc 访问提供,相比 FreeSql.Provider.PostgreSQL 支持的类型更少;
- 增加 通用的 Odbc 访问提供,不能迁移实体到数据库,不能 Skip 这样来分页,理论上能 crud 所有 odbc 数据库;
This commit is contained in:
28810
2019-09-21 00:48:34 +08:00
parent 90458cca38
commit dcf1da36d4
97 changed files with 18833 additions and 154 deletions

View File

@ -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
}
}

View File

@ -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>

View File

@ -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

View File

@ -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;
}
}
}

View File

@ -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;