mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 12:28:15 +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