mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
✨ support provider、Extensions Exceptions 多语言
This commit is contained in:
parent
e9949b58ff
commit
4fa125e93c
@ -24,7 +24,7 @@ namespace FreeSql
|
|||||||
static Func<IFreeSql> _resoleOrm;
|
static Func<IFreeSql> _resoleOrm;
|
||||||
internal static Func<IUnitOfWork> _resolveUow;
|
internal static Func<IUnitOfWork> _resolveUow;
|
||||||
|
|
||||||
public static IFreeSql Orm => _resoleOrm?.Invoke() ?? throw new Exception("BaseEntity.Initialization 初始化错误,获取到 IFreeSql 是 null");
|
public static IFreeSql Orm => _resoleOrm?.Invoke() ?? throw new Exception(CoreStrings.S_BaseEntity_Initialization_Error);
|
||||||
|
|
||||||
public static void Initialization(IFreeSql fsql, Func<IUnitOfWork> resolveUow) => Initialization(() => fsql, resolveUow);
|
public static void Initialization(IFreeSql fsql, Func<IUnitOfWork> resolveUow) => Initialization(() => fsql, resolveUow);
|
||||||
public static void Initialization(Func<IFreeSql> resoleOrm, Func<IUnitOfWork> resolveUow)
|
public static void Initialization(Func<IFreeSql> resoleOrm, Func<IUnitOfWork> resolveUow)
|
||||||
|
@ -33,7 +33,7 @@ public static class FreeSqlExtensionsLinqSql
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static ISelect<T1> RestoreToSelect<T1>(this IQueryable<T1> that) where T1 : class
|
public static ISelect<T1> RestoreToSelect<T1>(this IQueryable<T1> that) where T1 : class
|
||||||
{
|
{
|
||||||
var queryable = that as QueryableProvider<T1, T1> ?? throw new Exception($"无法将 IQueryable<{typeof(T1).Name}> 转换为 ISelect<{typeof(T1).Name}>,因为他的实现不是 FreeSql.Extensions.Linq.QueryableProvider");
|
var queryable = that as QueryableProvider<T1, T1> ?? throw new Exception(CoreStrings.S_CannotBeConverted_To_ISelect(typeof(T1).Name));
|
||||||
return queryable._select;
|
return queryable._select;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ namespace FreeSql.Extensions.Linq
|
|||||||
case "Average": return tplMaxMinAvgSum("Avg");
|
case "Average": return tplMaxMinAvgSum("Avg");
|
||||||
|
|
||||||
case "Concat":
|
case "Concat":
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
case "Contains":
|
case "Contains":
|
||||||
if (callExp.Arguments.Count == 2)
|
if (callExp.Arguments.Count == 2)
|
||||||
{
|
{
|
||||||
@ -141,7 +141,7 @@ namespace FreeSql.Extensions.Linq
|
|||||||
_select.Distinct();
|
_select.Distinct();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
|
|
||||||
case "ElementAt":
|
case "ElementAt":
|
||||||
case "ElementAtOrDefault":
|
case "ElementAtOrDefault":
|
||||||
@ -178,7 +178,7 @@ namespace FreeSql.Extensions.Linq
|
|||||||
_select.InternalWhere(whereParam);
|
_select.InternalWhere(whereParam);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
|
|
||||||
case "Skip":
|
case "Skip":
|
||||||
_select.Offset((int)callExp.Arguments[1].GetConstExprValue());
|
_select.Offset((int)callExp.Arguments[1].GetConstExprValue());
|
||||||
@ -190,7 +190,7 @@ namespace FreeSql.Extensions.Linq
|
|||||||
case "ToList":
|
case "ToList":
|
||||||
if (callExp.Arguments.Count == 1)
|
if (callExp.Arguments.Count == 1)
|
||||||
return _select.ToList();
|
return _select.ToList();
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
|
|
||||||
case "Select":
|
case "Select":
|
||||||
var selectParam = (callExp.Arguments[1] as UnaryExpression)?.Operand as LambdaExpression;
|
var selectParam = (callExp.Arguments[1] as UnaryExpression)?.Operand as LambdaExpression;
|
||||||
@ -199,7 +199,7 @@ namespace FreeSql.Extensions.Linq
|
|||||||
_select._selectExpression = selectParam;
|
_select._selectExpression = selectParam;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
|
|
||||||
case "Join":
|
case "Join":
|
||||||
if (callExp.Arguments.Count == 5)
|
if (callExp.Arguments.Count == 5)
|
||||||
@ -241,13 +241,13 @@ namespace FreeSql.Extensions.Linq
|
|||||||
|
|
||||||
case "Last":
|
case "Last":
|
||||||
case "LastOrDefault":
|
case "LastOrDefault":
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
|
|
||||||
case "GroupBy":
|
case "GroupBy":
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return throwCallExp(" 不支持");
|
return throwCallExp(CoreStrings.Not_Support);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tresult == null) return null;
|
if (tresult == null) return null;
|
||||||
|
@ -159,7 +159,7 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
|
|
||||||
case "-nameoptions":
|
case "-nameoptions":
|
||||||
ArgsNameOptions = args[a + 1].Split(',').Select(opt => opt == "1").ToArray();
|
ArgsNameOptions = args[a + 1].Split(',').Select(opt => opt == "1").ToArray();
|
||||||
if (ArgsNameOptions.Length != 4) throw new ArgumentException("-NameOptions 参数错误,格式为:0,0,0,0");
|
if (ArgsNameOptions.Length != 4) throw new ArgumentException(CoreStrings.S_NameOptions_Incorrect);
|
||||||
a++;
|
a++;
|
||||||
break;
|
break;
|
||||||
case "-namespace":
|
case "-namespace":
|
||||||
@ -168,7 +168,8 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
break;
|
break;
|
||||||
case "-db":
|
case "-db":
|
||||||
var dbargs = args[a + 1].Split(',', 2);
|
var dbargs = args[a + 1].Split(',', 2);
|
||||||
if (dbargs.Length != 2) throw new ArgumentException("-DB 参数错误,格式为:MySql,ConnectionString");
|
if (dbargs.Length != 2) throw new ArgumentException(CoreStrings.S_DB_ParameterError);
|
||||||
|
|
||||||
switch (dbargs[0].Trim().ToLower())
|
switch (dbargs[0].Trim().ToLower())
|
||||||
{
|
{
|
||||||
case "mysql": ArgsDbType = DataType.MySql; break;
|
case "mysql": ArgsDbType = DataType.MySql; break;
|
||||||
@ -181,7 +182,7 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
case "kingbasees": ArgsDbType = DataType.KingbaseES; break;
|
case "kingbasees": ArgsDbType = DataType.KingbaseES; break;
|
||||||
case "shentong": ArgsDbType = DataType.ShenTong; break;
|
case "shentong": ArgsDbType = DataType.ShenTong; break;
|
||||||
case "clickhouse": ArgsDbType = DataType.ClickHouse; break;
|
case "clickhouse": ArgsDbType = DataType.ClickHouse; break;
|
||||||
default: throw new ArgumentException($"-DB 参数错误,不支持的类型:\"{dbargs[0]}\"");
|
default: throw new ArgumentException(CoreStrings.S_DB_ParameterError_UnsupportedType(dbargs[0]));
|
||||||
}
|
}
|
||||||
ArgsConnectionString = dbargs[1].Trim();
|
ArgsConnectionString = dbargs[1].Trim();
|
||||||
a++;
|
a++;
|
||||||
@ -208,11 +209,11 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新
|
|||||||
a++;
|
a++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentException($"错误的参数设置:{args[a]}");
|
throw new ArgumentException(CoreStrings.S_WrongParameter(args[a]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException($"-DB 参数错误,未提供 ConnectionString");
|
if (string.IsNullOrEmpty(ArgsConnectionString)) throw new ArgumentException(CoreStrings.S_DB_Parameter_Error_NoConnectionString);
|
||||||
|
|
||||||
RazorEngine.Engine.Razor = RazorEngineService.Create(new RazorEngine.Configuration.TemplateServiceConfiguration
|
RazorEngine.Engine.Razor = RazorEngineService.Create(new RazorEngine.Configuration.TemplateServiceConfiguration
|
||||||
{
|
{
|
||||||
|
@ -795,14 +795,5 @@
|
|||||||
<param name="that"></param>
|
<param name="that"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
|
|
||||||
<summary>
|
|
||||||
批量注入 Repository,可以参考代码自行调整
|
|
||||||
</summary>
|
|
||||||
<param name="services"></param>
|
|
||||||
<param name="globalDataFilter"></param>
|
|
||||||
<param name="assemblies"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
@ -53,193 +53,194 @@
|
|||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
value : The object must be serialized into a byte array
|
value : The object must be serialized into a byte array
|
||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
<resheader name="resmimetype">
|
<resheader name="resmimetype">
|
||||||
<value>text/microsoft-resx</value>
|
<value>text/microsoft-resx</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="version">
|
<resheader name="version">
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="AddFreeDbContextError_CheckConstruction" xml:space="preserve">
|
<data name="AddFreeDbContextError_CheckConstruction" xml:space="preserve">
|
||||||
<value>FreeSql:An error occurred in AddFreeDbContext, check that the construction parameters of {dbContextTypeName} have been injected correctly</value>
|
<value>FreeSql:An error occurred in AddFreeDbContext, check that the construction parameters of {dbContextTypeName} have been injected correctly</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAdd_AlreadyExistsInStateManagement" xml:space="preserve">
|
<data name="CannotAdd_AlreadyExistsInStateManagement" xml:space="preserve">
|
||||||
<value>FreeSql:Not addable, already exists in state management: {entityString}</value>
|
<value>FreeSql:Not addable, already exists in state management: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAdd_EntityHasNo_PrimaryKey" xml:space="preserve">
|
<data name="CannotAdd_EntityHasNo_PrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:Not addable, entity has no primary key: {entityString}</value>
|
<value>FreeSql:Not addable, entity has no primary key: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAdd_PrimaryKey_NotSet" xml:space="preserve">
|
<data name="CannotAdd_PrimaryKey_NotSet" xml:space="preserve">
|
||||||
<value>FreeSql:Not addable, no value for primary key set: {entityString}</value>
|
<value>FreeSql:Not addable, no value for primary key set: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAdd_SelfIncreasingHasValue" xml:space="preserve">
|
<data name="CannotAdd_SelfIncreasingHasValue" xml:space="preserve">
|
||||||
<value>FreeSql:Not addable, self-increasing attribute has value: {entityString}</value>
|
<value>FreeSql:Not addable, self-increasing attribute has value: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAttach_EntityHasNo_PrimaryKey" xml:space="preserve">
|
<data name="CannotAttach_EntityHasNo_PrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:Not attachable, entity has no primary key: {entityString}</value>
|
<value>FreeSql:Not attachable, entity has no primary key: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAttach_PrimaryKey_NotSet" xml:space="preserve">
|
<data name="CannotAttach_PrimaryKey_NotSet" xml:space="preserve">
|
||||||
<value>FreeSql:Not attachable, no value for primary key set: {entityString}</value>
|
<value>FreeSql:Not attachable, no value for primary key set: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotDelete_DataNotTracked_ShouldQuery" xml:space="preserve">
|
<data name="CannotDelete_DataNotTracked_ShouldQuery" xml:space="preserve">
|
||||||
<value>FreeSql:Not deletable, data not tracked, should query first: {entityString}</value>
|
<value>FreeSql:Not deletable, data not tracked, should query first: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotDelete_EntityHasNo_PrimaryKey" xml:space="preserve">
|
<data name="CannotDelete_EntityHasNo_PrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:Not deletable, entity has no primary key: {entityString}</value>
|
<value>FreeSql:Not deletable, entity has no primary key: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotDelete_PrimaryKey_NotSet" xml:space="preserve">
|
<data name="CannotDelete_PrimaryKey_NotSet" xml:space="preserve">
|
||||||
<value>FreeSql:Not deletable, no value for primary key set: {entityString}</value>
|
<value>FreeSql:Not deletable, no value for primary key set: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotEdit_EntityHasNo_PrimaryKey" xml:space="preserve">
|
<data name="CannotEdit_EntityHasNo_PrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:Not editable, entity has no primary key: {entityString}</value>
|
<value>FreeSql:Not editable, entity has no primary key: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotUpdate_DataShouldQueryOrAttach" xml:space="preserve">
|
<data name="CannotUpdate_DataShouldQueryOrAttach" xml:space="preserve">
|
||||||
<value>FreeSql:Not updatable, data not tracked, should be queried first or Attach:{entityString}</value>
|
<value>FreeSql:Not updatable, data not tracked, should be queried first or Attach:{entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotUpdate_EntityHasNo_PrimaryKey" xml:space="preserve">
|
<data name="CannotUpdate_EntityHasNo_PrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:Not updatable, entity has no primary key: {entityString}</value>
|
<value>FreeSql:Not updatable, entity has no primary key: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotUpdate_PrimaryKey_NotSet" xml:space="preserve">
|
<data name="CannotUpdate_PrimaryKey_NotSet" xml:space="preserve">
|
||||||
<value>FreeSql:Not updatable, no value for primary key set: {entityString}</value>
|
<value>FreeSql:Not updatable, no value for primary key set: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotUpdate_RecordDoesNotExist" xml:space="preserve">
|
<data name="CannotUpdate_RecordDoesNotExist" xml:space="preserve">
|
||||||
<value>FreeSql:Not updatable, the record does not exist in the database: {entityString}</value>
|
<value>FreeSql:Not updatable, the record does not exist in the database: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ConfigureUseFreeSql" xml:space="preserve">
|
<data name="ConfigureUseFreeSql" xml:space="preserve">
|
||||||
<value>FreeSql:Please configure UseFreeSql in OnConfiguring or AddFreeDbContext</value>
|
<value>FreeSql:Please configure UseFreeSql in OnConfiguring or AddFreeDbContext</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DbSetAsType_NotSupport_Object" xml:space="preserve">
|
<data name="DbSetAsType_NotSupport_Object" xml:space="preserve">
|
||||||
<value>FreeSql:DbSet. AsType parameter error, please pass in the correct entity type</value>
|
<value>FreeSql:DbSet. AsType parameter error, please pass in the correct entity type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EntityType_CannotConvert" xml:space="preserve">
|
<data name="EntityType_CannotConvert" xml:space="preserve">
|
||||||
<value>FreeSql:Entity type {EntityTypeName} cannot be converted to {name} and cannot use this method</value>
|
<value>FreeSql:Entity type {EntityTypeName} cannot be converted to {name} and cannot use this method</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EntityType_PrimaryKeyError" xml:space="preserve">
|
<data name="EntityType_PrimaryKeyError" xml:space="preserve">
|
||||||
<value>FreeSql:Entity type {EntityTypeName} Primary key type is not {fullName} and cannot be used with this method</value>
|
<value>FreeSql:Entity type {EntityTypeName} Primary key type is not {fullName} and cannot be used with this method</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EntityType_PrimaryKeyIsNotOne" xml:space="preserve">
|
<data name="EntityType_PrimaryKeyIsNotOne" xml:space="preserve">
|
||||||
<value>FreeSql:Entity type {EntityTypeName} Primary key number is not 1 and cannot be used with this method</value>
|
<value>FreeSql:Entity type {EntityTypeName} Primary key number is not 1 and cannot be used with this method</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FailedSetFilter_NotBelongIRpository" xml:space="preserve">
|
<data name="FailedSetFilter_NotBelongIRpository" xml:space="preserve">
|
||||||
<value>FreeSql:FreeSql. Repository failed to set filter because object does not belong to IRepository</value>
|
<value>FreeSql:FreeSql. Repository failed to set filter because object does not belong to IRepository</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Incomparable_EntityHasNo_PrimaryKey" xml:space="preserve">
|
<data name="Incomparable_EntityHasNo_PrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:Not comparable, entity has no primary key: {entityString}</value>
|
<value>FreeSql:Not comparable, entity has no primary key: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Incomparable_PrimaryKey_NotSet" xml:space="preserve">
|
<data name="Incomparable_PrimaryKey_NotSet" xml:space="preserve">
|
||||||
<value>FreeSql:Non-comparable, no value for primary key set: {entityString}</value>
|
<value>FreeSql:Non-comparable, no value for primary key set: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InsertError_Filter" xml:space="preserve">
|
<data name="InsertError_Filter" xml:space="preserve">
|
||||||
<value>FreeSql:FreeSql. Repository Insert failed because the filter {filterKey}: {filterValueExpression} was set and the inserted data does not conform to {entityString}</value>
|
<value>FreeSql:FreeSql. Repository Insert failed because the filter {filterKey}: {filterValueExpression} was set and the inserted data does not conform to {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ISelectAsType_ParameterError" xml:space="preserve">
|
<data name="ISelectAsType_ParameterError" xml:space="preserve">
|
||||||
<value>FreeSql:ISelect. AsType parameter does not support specifying as object</value>
|
<value>FreeSql:ISelect. AsType parameter does not support specifying as object</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_Property" xml:space="preserve">
|
<data name="NotFound_Property" xml:space="preserve">
|
||||||
<value>FreeSql:Property {propertyName} does not exist for {tableTypeFullName}</value>
|
<value>FreeSql:Property {propertyName} does not exist for {tableTypeFullName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFoundMethod_StatesRemoveByObjects" xml:space="preserve">
|
<data name="NotFoundMethod_StatesRemoveByObjects" xml:space="preserve">
|
||||||
<value>FreeSql:Method DbSet<> not found. StatesRemoveByObjects</value>
|
<value>FreeSql:Method DbSet<> not found. StatesRemoveByObjects</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterDataTypeError" xml:space="preserve">
|
<data name="ParameterDataTypeError" xml:space="preserve">
|
||||||
<value>FreeSql:Parameter data type error {entityTypeFullName}</value>
|
<value>FreeSql:Parameter data type error {entityTypeFullName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError" xml:space="preserve">
|
<data name="ParameterError" xml:space="preserve">
|
||||||
<value>FreeSql:Parameter error {param}</value>
|
<value>FreeSql:Parameter error {param}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_CannotBeNull" xml:space="preserve">
|
<data name="ParameterError_CannotBeNull" xml:space="preserve">
|
||||||
<value>FreeSql:Parameter error {param} cannot be null</value>
|
<value>FreeSql:Parameter error {param} cannot be null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_IsNot_CollectionProperties" xml:space="preserve">
|
<data name="ParameterError_IsNot_CollectionProperties" xml:space="preserve">
|
||||||
<value>FreeSql:Parameter error {many} is not a collection property</value>
|
<value>FreeSql:Parameter error {many} is not a collection property</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_NotFound_CollectionProperties" xml:space="preserve">
|
<data name="ParameterError_NotFound_CollectionProperties" xml:space="preserve">
|
||||||
<value>FreeSql:Parameter error {many} Collection property does not exist</value>
|
<value>FreeSql:Parameter error {many} Collection property does not exist</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_NotFound_Property" xml:space="preserve">
|
<data name="ParameterError_NotFound_Property" xml:space="preserve">
|
||||||
<value>FreeSql:Parameter error {one} attribute does not exist</value>
|
<value>FreeSql:Parameter error {one} attribute does not exist</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Propagation_Mandatory" xml:space="preserve">
|
<data name="Propagation_Mandatory" xml:space="preserve">
|
||||||
<value>FreeSql:Propagation_ Mandatory: With the current transaction, throw an exception if there is no current transaction</value>
|
<value>FreeSql:Propagation_ Mandatory: With the current transaction, throw an exception if there is no current transaction</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Propagation_Never" xml:space="preserve">
|
<data name="Propagation_Never" xml:space="preserve">
|
||||||
<value>FreeSql:Propagation_ Never: Perform the operation non-transactionally and throw an exception if the current transaction exists</value>
|
<value>FreeSql:Propagation_ Never: Perform the operation non-transactionally and throw an exception if the current transaction exists</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PropertyOfType_IsNot_OneToManyOrManyToMany" xml:space="preserve">
|
<data name="PropertyOfType_IsNot_OneToManyOrManyToMany" xml:space="preserve">
|
||||||
<value>FreeSql:Property {propertyName} of type {tableTypeFullName} is not OneToMany or ManyToMany attribute</value>
|
<value>FreeSql:Property {propertyName} of type {tableTypeFullName} is not OneToMany or ManyToMany attribute</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SpecialError_BatchAdditionFailed" xml:space="preserve">
|
<data name="SpecialError_BatchAdditionFailed" xml:space="preserve">
|
||||||
<value>FreeSql:Special error: Bulk add failed, {dataType} returned data, does not match the number added</value>
|
<value>FreeSql:Special error: Bulk add failed, {dataType} returned data, does not match the number added</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SpecialError_UpdateFailedDataNotTracked" xml:space="preserve">
|
<data name="SpecialError_UpdateFailedDataNotTracked" xml:space="preserve">
|
||||||
<value>FreeSql:Special error: Update failed, data not tracked: {entityString}</value>
|
<value>FreeSql:Special error: Update failed, data not tracked: {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TransactionHasBeenStarted" xml:space="preserve">
|
<data name="TransactionHasBeenStarted" xml:space="preserve">
|
||||||
<value>FreeSql:Transaction opened, unit of work cannot be disabled</value>
|
<value>FreeSql:Transaction opened, unit of work cannot be disabled</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeHasSetProperty_IgnoreAttribute" xml:space="preserve">
|
<data name="TypeHasSetProperty_IgnoreAttribute" xml:space="preserve">
|
||||||
<value>FreeSql:The {tableTypeFullName} type has set the property {propertyName} Ignore the attribute</value>
|
<value>FreeSql:The {tableTypeFullName} type has set the property {propertyName} Ignore the attribute</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnitOfWorkManager_Construction_CannotBeNull" xml:space="preserve">
|
<data name="UnitOfWorkManager_Construction_CannotBeNull" xml:space="preserve">
|
||||||
<value>FreeSql:The {unitOfWorkManager} constructor parameter {fsql} cannot be null</value>
|
<value>FreeSql:The {unitOfWorkManager} constructor parameter {fsql} cannot be null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UpdateError_Filter" xml:space="preserve">
|
<data name="UpdateError_Filter" xml:space="preserve">
|
||||||
<value>FreeSql:FreeSql. Repository Update failed because the filter {filterKey}: {filterValueExpression} is set and the updated data does not conform to {entityString}</value>
|
<value>FreeSql:FreeSql. Repository Update failed because the filter {filterKey}: {filterValueExpression} is set and the updated data does not conform to {entityString}</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
@ -0,0 +1,99 @@
|
|||||||
|
using System.Threading;
|
||||||
|
using Xunit;
|
||||||
|
using Xunit.Abstractions;
|
||||||
|
|
||||||
|
namespace FreeSql.Tests.Properties
|
||||||
|
{
|
||||||
|
public class ProviderExtensionsTests
|
||||||
|
{
|
||||||
|
private readonly ITestOutputHelper output;
|
||||||
|
public ProviderExtensionsTests(ITestOutputHelper output)
|
||||||
|
{
|
||||||
|
this.output = output;
|
||||||
|
//Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-Hans");
|
||||||
|
//Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-Hans");
|
||||||
|
|
||||||
|
//Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
|
||||||
|
//Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
|
||||||
|
|
||||||
|
//CoreStrings.Culture= new System.Globalization.CultureInfo("zh-CN");
|
||||||
|
CoreStrings.Culture = new System.Globalization.CultureInfo("en-US");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AsTable_PropertyName_NotDateTimeTest()
|
||||||
|
{
|
||||||
|
var x = CoreStrings.S_Access_InsertOnlyOneAtTime;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_BaseEntity_Initialization_Error;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_BlockAccess_WaitForRecovery(1, 2);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_CannotBeConverted_To_ISelect(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_ConnectionStringError;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_ConnectionStringError_Check(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_ConnectionStringError_CheckProject;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_ConnectionStringError_CheckProjectConnection(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_CustomAdapter_Cannot_Use_CreateCommand;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_CustomAdapter_OnlySuppport_UseConnectionFactory;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_Dameng_NotSupport_TablespaceSchemas(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_DB_ParameterError;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_DB_ParameterError_UnsupportedType(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_DB_Parameter_Error_NoConnectionString;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_Features_Unique(1, 2);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_InsertOrUpdate_Unable_UpdateColumns;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_MasterDatabase;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_MygisGeometry_NotImplement(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_NameOptions_Incorrect;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_NotFound_Name("x");
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_NotImplementSkipOffset("oRACLE");
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_Not_Implemented_Feature;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_Not_Implemented_FeedBack;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_ObjectPool;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_OldTableExists("old", "new");
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_OnConflictDoUpdate_MustIsPrimary;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_Oracle_NotSupport_TablespaceSchemas(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_ParsingFailed_UseRestoreToSelect(1, 2);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_RequiresEntityPrimaryKey(1, 2);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_SelectManayErrorType(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_SlaveDatabase;
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_TypeMappingNotImplemented(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_Type_IsNot_Migrable(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_Type_IsNot_Migrable_0Attributes(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
x = CoreStrings.S_WrongParameter(1);
|
||||||
|
output.WriteLine(x);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -5259,6 +5259,181 @@
|
|||||||
运行时错误,反射获取 IncludeMany 方法失败
|
运行时错误,反射获取 IncludeMany 方法失败
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_Access_InsertOnlyOneAtTime">
|
||||||
|
<summary>
|
||||||
|
蛋疼的 Access 插入只能一条一条执行,不支持 values(..),(..) 也不支持 select .. UNION ALL select ..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_BaseEntity_Initialization_Error">
|
||||||
|
<summary>
|
||||||
|
BaseEntity.Initialization 初始化错误,获取到 IFreeSql 是 null
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_BlockAccess_WaitForRecovery(System.Object,System.Object)">
|
||||||
|
<summary>
|
||||||
|
【{thisName}】Block access and wait for recovery: {exMessage}
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_CannotBeConverted_To_ISelect(System.Object)">
|
||||||
|
<summary>
|
||||||
|
无法将 IQueryable<{typeofName}> 转换为 ISelect<{typeofName}>,因为他的实现不是 FreeSql.Extensions.Linq.QueryableProvider
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_ConnectionStringError">
|
||||||
|
<summary>
|
||||||
|
连接字符串错误
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_ConnectionStringError_Check(System.Object)">
|
||||||
|
<summary>
|
||||||
|
【{thisName}】连接字符串错误,请检查。
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_ConnectionStringError_CheckProject">
|
||||||
|
<summary>
|
||||||
|
连接字符串错误,或者检查项目属性 > 生成 > 目标平台:x86 | x64
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_ConnectionStringError_CheckProjectConnection(System.Object)">
|
||||||
|
<summary>
|
||||||
|
【{thisName}】连接字符串错误,请检查。或者检查项目属性 > 生成 > 目标平台:x86 | x64
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_CustomAdapter_Cannot_Use_CreateCommand">
|
||||||
|
<summary>
|
||||||
|
FreeSql.Provider.CustomAdapter 无法使用 CreateCommand
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_CustomAdapter_OnlySuppport_UseConnectionFactory">
|
||||||
|
<summary>
|
||||||
|
FreeSql.Provider.CustomAdapter 仅支持 UseConnectionFactory 方式构建 IFreeSql
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_Dameng_NotSupport_TablespaceSchemas(System.Object)">
|
||||||
|
<summary>
|
||||||
|
达梦 CodeFirst 不支持代码创建 tablespace 与 schemas {tbname}
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_DB_Parameter_Error_NoConnectionString">
|
||||||
|
<summary>
|
||||||
|
-DB 参数错误,未提供 ConnectionString
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_DB_ParameterError">
|
||||||
|
<summary>
|
||||||
|
-DB 参数错误,格式为:MySql,ConnectionString
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_DB_ParameterError_UnsupportedType(System.Object)">
|
||||||
|
<summary>
|
||||||
|
-DB 参数错误,不支持的类型:\"{dbargs}\"
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_Features_Unique(System.Object,System.Object)">
|
||||||
|
<summary>
|
||||||
|
{method} 是 FreeSql.Provider.{provider} 特有的功能
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_InsertOrUpdate_Unable_UpdateColumns">
|
||||||
|
<summary>
|
||||||
|
fsql.InsertOrUpdate Sqlite 无法完成 UpdateColumns 操作
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_MasterDatabase">
|
||||||
|
<summary>
|
||||||
|
主库
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_MygisGeometry_NotImplement(System.Object)">
|
||||||
|
<summary>
|
||||||
|
MygisGeometry.Parse 未实现 \"{wkt}\"
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_NameOptions_Incorrect">
|
||||||
|
<summary>
|
||||||
|
-NameOptions 参数错误,格式为:0,0,0,0
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_Not_Implemented_Feature">
|
||||||
|
<summary>
|
||||||
|
未实现该功能
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_Not_Implemented_FeedBack">
|
||||||
|
<summary>
|
||||||
|
未实现错误,请反馈给作者
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_NotFound_Name(System.Object)">
|
||||||
|
<summary>
|
||||||
|
找不到 {name}
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_NotImplementSkipOffset(System.Object)">
|
||||||
|
<summary>
|
||||||
|
FreeSql.Provider.{providerName} 未实现 Skip/Offset 功能,如果需要分页请使用判断上一次 id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_ObjectPool">
|
||||||
|
<summary>
|
||||||
|
对象池
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_OldTableExists(System.Object,System.Object)">
|
||||||
|
<summary>
|
||||||
|
旧表(OldName):{tboldname} 存在,数据库已存在 {tbname} 表,无法改名
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_OnConflictDoUpdate_MustIsPrimary">
|
||||||
|
<summary>
|
||||||
|
OnConflictDoUpdate 功能要求实体类必须设置 IsPrimary 属性
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_Oracle_NotSupport_TablespaceSchemas(System.Object)">
|
||||||
|
<summary>
|
||||||
|
Oracle CodeFirst 不支持代码创建 tablespace 与 schemas {tbname}
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_ParsingFailed_UseRestoreToSelect(System.Object,System.Object)">
|
||||||
|
<summary>
|
||||||
|
解析失败 {callExpMethodName} {message},提示:可以使用扩展方法 IQueryable.RestoreToSelect() 还原为 ISelect 再查询
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_RequiresEntityPrimaryKey(System.Object,System.Object)">
|
||||||
|
<summary>
|
||||||
|
fsql.InsertOrUpdate + IfExistsDoNothing + {providerName}要求实体类 {tableCsName} 必须有主键
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_SelectManayErrorType(System.Object)">
|
||||||
|
<summary>
|
||||||
|
SelectMany 错误的类型:{typeFullName}
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.CoreStrings.S_SlaveDatabase">
|
||||||
|
<summary>
|
||||||
|
从库
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_Type_IsNot_Migrable(System.Object)">
|
||||||
|
<summary>
|
||||||
|
类型 {objentityTypeFullName} 不可迁移
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_Type_IsNot_Migrable_0Attributes(System.Object)">
|
||||||
|
<summary>
|
||||||
|
类型 {objentityTypeFullName} 不可迁移,可迁移属性0个
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_TypeMappingNotImplemented(System.Object)">
|
||||||
|
<summary>
|
||||||
|
未实现 {columnDbTypeTextFull} 类型映射
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.CoreStrings.S_WrongParameter(System.Object)">
|
||||||
|
<summary>
|
||||||
|
错误的参数设置:{args}
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="M:FreeSql.CoreStrings.Set_Column_IsNullable_False(System.Object)">
|
<member name="M:FreeSql.CoreStrings.Set_Column_IsNullable_False(System.Object)">
|
||||||
<summary>
|
<summary>
|
||||||
{qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]
|
{qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]
|
||||||
|
253
FreeSql/Properties/CoreStrings.Designer.cs
generated
253
FreeSql/Properties/CoreStrings.Designer.cs
generated
@ -1,11 +1,8 @@
|
|||||||
|
|
||||||
// <auto-generated />
|
// <auto-generated />
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Resources;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Threading;
|
using System.Resources;
|
||||||
|
|
||||||
namespace FreeSql
|
namespace FreeSql
|
||||||
{
|
{
|
||||||
@ -866,6 +863,254 @@ namespace FreeSql
|
|||||||
public static string RunTimeError_Reflection_IncludeMany
|
public static string RunTimeError_Reflection_IncludeMany
|
||||||
=> GetString("RunTimeError_Reflection_IncludeMany");
|
=> GetString("RunTimeError_Reflection_IncludeMany");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 蛋疼的 Access 插入只能一条一条执行,不支持 values(..),(..) 也不支持 select .. UNION ALL select ..
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Access_InsertOnlyOneAtTime
|
||||||
|
=> GetString("S_Access_InsertOnlyOneAtTime");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// BaseEntity.Initialization 初始化错误,获取到 IFreeSql 是 null
|
||||||
|
/// </summary>
|
||||||
|
public static string S_BaseEntity_Initialization_Error
|
||||||
|
=> GetString("S_BaseEntity_Initialization_Error");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 【{thisName}】Block access and wait for recovery: {exMessage}
|
||||||
|
/// </summary>
|
||||||
|
public static string S_BlockAccess_WaitForRecovery(object thisName, object exMessage)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_BlockAccess_WaitForRecovery", nameof(thisName), nameof(exMessage)),
|
||||||
|
thisName, exMessage);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 无法将 IQueryable<{typeofName}> 转换为 ISelect<{typeofName}>,因为他的实现不是 FreeSql.Extensions.Linq.QueryableProvider
|
||||||
|
/// </summary>
|
||||||
|
public static string S_CannotBeConverted_To_ISelect(object typeofName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_CannotBeConverted_To_ISelect", nameof(typeofName)),
|
||||||
|
typeofName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 连接字符串错误
|
||||||
|
/// </summary>
|
||||||
|
public static string S_ConnectionStringError
|
||||||
|
=> GetString("S_ConnectionStringError");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 【{thisName}】连接字符串错误,请检查。
|
||||||
|
/// </summary>
|
||||||
|
public static string S_ConnectionStringError_Check(object thisName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_ConnectionStringError_Check", nameof(thisName)),
|
||||||
|
thisName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 连接字符串错误,或者检查项目属性 > 生成 > 目标平台:x86 | x64
|
||||||
|
/// </summary>
|
||||||
|
public static string S_ConnectionStringError_CheckProject
|
||||||
|
=> GetString("S_ConnectionStringError_CheckProject ");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 【{thisName}】连接字符串错误,请检查。或者检查项目属性 > 生成 > 目标平台:x86 | x64
|
||||||
|
/// </summary>
|
||||||
|
public static string S_ConnectionStringError_CheckProjectConnection(object thisName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_ConnectionStringError_CheckProjectConnection", nameof(thisName)),
|
||||||
|
thisName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// FreeSql.Provider.CustomAdapter 无法使用 CreateCommand
|
||||||
|
/// </summary>
|
||||||
|
public static string S_CustomAdapter_Cannot_Use_CreateCommand
|
||||||
|
=> GetString("S_CustomAdapter_Cannot_Use_CreateCommand");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// FreeSql.Provider.CustomAdapter 仅支持 UseConnectionFactory 方式构建 IFreeSql
|
||||||
|
/// </summary>
|
||||||
|
public static string S_CustomAdapter_OnlySuppport_UseConnectionFactory
|
||||||
|
=> GetString("S_CustomAdapter_OnlySuppport_UseConnectionFactory ");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 达梦 CodeFirst 不支持代码创建 tablespace 与 schemas {tbname}
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Dameng_NotSupport_TablespaceSchemas (object tbname)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_Dameng_NotSupport_TablespaceSchemas ", nameof(tbname)),
|
||||||
|
tbname);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// -DB 参数错误,未提供 ConnectionString
|
||||||
|
/// </summary>
|
||||||
|
public static string S_DB_Parameter_Error_NoConnectionString
|
||||||
|
=> GetString("S_DB_Parameter_Error_NoConnectionString");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// -DB 参数错误,格式为:MySql,ConnectionString
|
||||||
|
/// </summary>
|
||||||
|
public static string S_DB_ParameterError
|
||||||
|
=> GetString("S_DB_ParameterError");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// -DB 参数错误,不支持的类型:\"{dbargs}\"
|
||||||
|
/// </summary>
|
||||||
|
public static string S_DB_ParameterError_UnsupportedType(object dbargs)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_DB_ParameterError_UnsupportedType", nameof(dbargs)),
|
||||||
|
dbargs);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// {method} 是 FreeSql.Provider.{provider} 特有的功能
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Features_Unique(object method, object provider)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_Features_Unique", nameof(method), nameof(provider)),
|
||||||
|
method, provider);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// fsql.InsertOrUpdate Sqlite 无法完成 UpdateColumns 操作
|
||||||
|
/// </summary>
|
||||||
|
public static string S_InsertOrUpdate_Unable_UpdateColumns
|
||||||
|
=> GetString("S_InsertOrUpdate_Unable_UpdateColumns");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 主库
|
||||||
|
/// </summary>
|
||||||
|
public static string S_MasterDatabase
|
||||||
|
=> GetString("S_MasterDatabase");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// MygisGeometry.Parse 未实现 \"{wkt}\"
|
||||||
|
/// </summary>
|
||||||
|
public static string S_MygisGeometry_NotImplement(object wkt)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_MygisGeometry_NotImplement", nameof(wkt)),
|
||||||
|
wkt);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// -NameOptions 参数错误,格式为:0,0,0,0
|
||||||
|
/// </summary>
|
||||||
|
public static string S_NameOptions_Incorrect
|
||||||
|
=> GetString("S_NameOptions_Incorrect");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 未实现该功能
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Not_Implemented_Feature
|
||||||
|
=> GetString("S_Not_Implemented_Feature");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 未实现错误,请反馈给作者
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Not_Implemented_FeedBack
|
||||||
|
=> GetString("S_Not_Implemented_FeedBack");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 找不到 {name}
|
||||||
|
/// </summary>
|
||||||
|
public static string S_NotFound_Name(object name)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_NotFound_Name", nameof(name)),
|
||||||
|
name);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// FreeSql.Provider.{providerName} 未实现 Skip/Offset 功能,如果需要分页请使用判断上一次 id
|
||||||
|
/// </summary>
|
||||||
|
public static string S_NotImplementSkipOffset(object providerName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_NotImplementSkipOffset", nameof(providerName)),
|
||||||
|
providerName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 对象池
|
||||||
|
/// </summary>
|
||||||
|
public static string S_ObjectPool
|
||||||
|
=> GetString("S_ObjectPool");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 旧表(OldName):{tboldname} 存在,数据库已存在 {tbname} 表,无法改名
|
||||||
|
/// </summary>
|
||||||
|
public static string S_OldTableExists(object tboldname, object tbname)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_OldTableExists", nameof(tboldname), nameof(tbname)),
|
||||||
|
tboldname, tbname);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// OnConflictDoUpdate 功能要求实体类必须设置 IsPrimary 属性
|
||||||
|
/// </summary>
|
||||||
|
public static string S_OnConflictDoUpdate_MustIsPrimary
|
||||||
|
=> GetString("S_OnConflictDoUpdate_MustIsPrimary");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Oracle CodeFirst 不支持代码创建 tablespace 与 schemas {tbname}
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Oracle_NotSupport_TablespaceSchemas(object tbname)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_Oracle_NotSupport_TablespaceSchemas", nameof(tbname)),
|
||||||
|
tbname);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 解析失败 {callExpMethodName} {message},提示:可以使用扩展方法 IQueryable.RestoreToSelect() 还原为 ISelect 再查询
|
||||||
|
/// </summary>
|
||||||
|
public static string S_ParsingFailed_UseRestoreToSelect(object callExpMethodName, object message)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_ParsingFailed_UseRestoreToSelect", nameof(callExpMethodName), nameof(message)),
|
||||||
|
callExpMethodName, message);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// fsql.InsertOrUpdate + IfExistsDoNothing + {providerName}要求实体类 {tableCsName} 必须有主键
|
||||||
|
/// </summary>
|
||||||
|
public static string S_RequiresEntityPrimaryKey(object providerName, object tableCsName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_RequiresEntityPrimaryKey", nameof(providerName), nameof(tableCsName)),
|
||||||
|
providerName, tableCsName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SelectMany 错误的类型:{typeFullName}
|
||||||
|
/// </summary>
|
||||||
|
public static string S_SelectManayErrorType(object typeFullName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_SelectManayErrorType", nameof(typeFullName)),
|
||||||
|
typeFullName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 从库
|
||||||
|
/// </summary>
|
||||||
|
public static string S_SlaveDatabase
|
||||||
|
=> GetString("S_SlaveDatabase");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 类型 {objentityTypeFullName} 不可迁移
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Type_IsNot_Migrable(object objentityTypeFullName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_Type_IsNot_Migrable", nameof(objentityTypeFullName)),
|
||||||
|
objentityTypeFullName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 类型 {objentityTypeFullName} 不可迁移,可迁移属性0个
|
||||||
|
/// </summary>
|
||||||
|
public static string S_Type_IsNot_Migrable_0Attributes(object objentityTypeFullName)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_Type_IsNot_Migrable_0Attributes", nameof(objentityTypeFullName)),
|
||||||
|
objentityTypeFullName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 未实现 {columnDbTypeTextFull} 类型映射
|
||||||
|
/// </summary>
|
||||||
|
public static string S_TypeMappingNotImplemented(object columnDbTypeTextFull)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_TypeMappingNotImplemented", nameof(columnDbTypeTextFull)),
|
||||||
|
columnDbTypeTextFull);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 错误的参数设置:{args}
|
||||||
|
/// </summary>
|
||||||
|
public static string S_WrongParameter(object args)
|
||||||
|
=> string.Format(
|
||||||
|
GetString("S_WrongParameter", nameof(args)),
|
||||||
|
args);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// {qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]
|
/// {qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
@ -53,445 +53,551 @@
|
|||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
value : The object must be serialized into a byte array
|
value : The object must be serialized into a byte array
|
||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
<resheader name="resmimetype">
|
<resheader name="resmimetype">
|
||||||
<value>text/microsoft-resx</value>
|
<value>text/microsoft-resx</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="version">
|
<resheader name="version">
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<data name="AsTable_PropertyName_FormatError" xml:space="preserve">
|
<data name="AsTable_PropertyName_FormatError" xml:space="preserve">
|
||||||
<value>FreeSql:[Table(AsTable="{asTable}")] Property value formatted incorrectly</value>
|
<value>FreeSql:[Table(AsTable="{asTable}")] Property value formatted incorrectly</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AsTable_PropertyName_NotDateTime" xml:space="preserve">
|
<data name="AsTable_PropertyName_NotDateTime" xml:space="preserve">
|
||||||
<value>FreeSql:The property name {atmGroupsValue} set by [Table (AsTable = xx)] is not of type DateTime</value>
|
<value>FreeSql:The property name {atmGroupsValue} set by [Table (AsTable = xx)] is not of type DateTime</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Available_Failed_Get_Resource" xml:space="preserve">
|
<data name="Available_Failed_Get_Resource" xml:space="preserve">
|
||||||
<value>FreeSql:{name}: Failed to get resource {statistics}</value>
|
<value>FreeSql:{name}: Failed to get resource {statistics}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Available_Thrown_Exception" xml:space="preserve">
|
<data name="Available_Thrown_Exception" xml:space="preserve">
|
||||||
<value>FreeSql:{name}: An exception needs to be thrown</value>
|
<value>FreeSql:{name}: An exception needs to be thrown</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Bad_Expression_Format" xml:space="preserve">
|
<data name="Bad_Expression_Format" xml:space="preserve">
|
||||||
<value>FreeSql:Wrong expression format {column}</value>
|
<value>FreeSql:Wrong expression format {column}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Before_Chunk_Cannot_Use_Select" xml:space="preserve">
|
<data name="Before_Chunk_Cannot_Use_Select" xml:space="preserve">
|
||||||
<value>FreeSql:Select is not available until the Chunk function</value>
|
<value>FreeSql:Select is not available until the Chunk function</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Begin_Transaction_Then_ForUpdate" xml:space="preserve">
|
<data name="Begin_Transaction_Then_ForUpdate" xml:space="preserve">
|
||||||
<value>FreeSql:For security reasons, be sure to use ForUpdate after the transaction is open</value>
|
<value>FreeSql:For security reasons, be sure to use ForUpdate after the transaction is open</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Cannot_Be_NULL" xml:space="preserve">
|
<data name="Cannot_Be_NULL" xml:space="preserve">
|
||||||
<value>FreeSql:Cannot be null</value>
|
<value>FreeSql:Cannot be null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Cannot_Be_NULL_Name" xml:space="preserve">
|
<data name="Cannot_Be_NULL_Name" xml:space="preserve">
|
||||||
<value>FreeSql:{name} cannot be null</value>
|
<value>FreeSql:{name} cannot be null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Cannot_Match_Property" xml:space="preserve">
|
<data name="Cannot_Match_Property" xml:space="preserve">
|
||||||
<value>FreeSql:Unable to match {property}</value>
|
<value>FreeSql:Unable to match {property}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Cannot_Resolve_ExpressionTree" xml:space="preserve">
|
<data name="Cannot_Resolve_ExpressionTree" xml:space="preserve">
|
||||||
<value>FreeSql:{property} cannot be resolved to an expression tree</value>
|
<value>FreeSql:{property} cannot be resolved to an expression tree</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Check_UseConnectionString" xml:space="preserve">
|
<data name="Check_UseConnectionString" xml:space="preserve">
|
||||||
<value>FreeSql:The parameter master ConnectionString cannot be empty, check UseConnectionString</value>
|
<value>FreeSql:The parameter master ConnectionString cannot be empty, check UseConnectionString</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Commit" xml:space="preserve">
|
<data name="Commit" xml:space="preserve">
|
||||||
<value>FreeSql:Commit</value>
|
<value>FreeSql:Commit</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Connection_Failed_Switch_Servers" xml:space="preserve">
|
<data name="Connection_Failed_Switch_Servers" xml:space="preserve">
|
||||||
<value>FreeSql:Connection failed, ready to switch other available servers</value>
|
<value>FreeSql:Connection failed, ready to switch other available servers</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Custom_Expression_ParsingError" xml:space="preserve">
|
<data name="Custom_Expression_ParsingError" xml:space="preserve">
|
||||||
<value>FreeSql:Custom expression parsing error: type {exp3MethodDeclaringType} needs to define static ThreadLocal<ExpressionCallContext>field, field, field (important three reminders)</value>
|
<value>FreeSql:Custom expression parsing error: type {exp3MethodDeclaringType} needs to define static ThreadLocal<ExpressionCallContext>field, field, field (important three reminders)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Custom_Reflection_IsNotNull" xml:space="preserve">
|
<data name="Custom_Reflection_IsNotNull" xml:space="preserve">
|
||||||
<value>FreeSql:Custom {Reflection Information} cannot be empty, format: {static method name}{space}{reflection information}</value>
|
<value>FreeSql:Custom {Reflection Information} cannot be empty, format: {static method name}{space}{reflection information}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Custom_StaticMethodName_IsNotNull" xml:space="preserve">
|
<data name="Custom_StaticMethodName_IsNotNull" xml:space="preserve">
|
||||||
<value>FreeSql:Custom {static method name} cannot be empty, format: {static method name}{space}{reflection information}</value>
|
<value>FreeSql:Custom {static method name} cannot be empty, format: {static method name}{space}{reflection information}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Custom_StaticMethodName_NotSet_DynamicFilterCustom" xml:space="preserve">
|
<data name="Custom_StaticMethodName_NotSet_DynamicFilterCustom" xml:space="preserve">
|
||||||
<value>FreeSql:Custom corresponding {{static method name}}:{fiValueCustomArray} The [DynamicFilterCustomAttribute] attribute is not set</value>
|
<value>FreeSql:Custom corresponding {{static method name}}:{fiValueCustomArray} The [DynamicFilterCustomAttribute] attribute is not set</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CustomFieldSeparatedBySpaces" xml:space="preserve">
|
<data name="CustomFieldSeparatedBySpaces" xml:space="preserve">
|
||||||
<value>FreeSql:Custom requires that Fields be space-split and 2-length in the format: {static method name}{space}{reflection information}</value>
|
<value>FreeSql:Custom requires that Fields be space-split and 2-length in the format: {static method name}{space}{reflection information}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DataType_AsType_Inconsistent" xml:space="preserve">
|
<data name="DataType_AsType_Inconsistent" xml:space="preserve">
|
||||||
<value>FreeSql:The data type of the operation ({dataDisplayCsharp}) is inconsistent with AsType ({tableTypeDisplayCsharp}). Please check.</value>
|
<value>FreeSql:The data type of the operation ({dataDisplayCsharp}) is inconsistent with AsType ({tableTypeDisplayCsharp}). Please check.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DateRange_Comma_Separateda_By2Char" xml:space="preserve">
|
<data name="DateRange_Comma_Separateda_By2Char" xml:space="preserve">
|
||||||
<value>FreeSql:DateRange requires that Value be comma-separated and 2-length</value>
|
<value>FreeSql:DateRange requires that Value be comma-separated and 2-length</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DateRange_DateFormat_yyyy" xml:space="preserve">
|
<data name="DateRange_DateFormat_yyyy" xml:space="preserve">
|
||||||
<value>FreeSql:DateRange requires that the Value [1] format must be: yyyy, yyyy-MM, yyyy-MM-dd, yyyyy-MM-dd HH, yyyy, yyyy-MM-dd HH:mm</value>
|
<value>FreeSql:DateRange requires that the Value [1] format must be: yyyy, yyyy-MM, yyyy-MM-dd, yyyyy-MM-dd HH, yyyy, yyyy-MM-dd HH:mm</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DbUpdateVersionException_RowLevelOptimisticLock" xml:space="preserve">
|
<data name="DbUpdateVersionException_RowLevelOptimisticLock" xml:space="preserve">
|
||||||
<value>FreeSql:The record may not exist, or the row level optimistic lock version is out of date, the number of updates {sourceCount}, the number of rows affected {affrows}.</value>
|
<value>FreeSql:The record may not exist, or the row level optimistic lock version is out of date, the number of updates {sourceCount}, the number of rows affected {affrows}.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Different_Number_SlaveConnectionString_SlaveWeights" xml:space="preserve">
|
<data name="Different_Number_SlaveConnectionString_SlaveWeights" xml:space="preserve">
|
||||||
<value>FreeSql:The number of SlaveConnectionStrings is not the same as SlaveWeights</value>
|
<value>FreeSql:The number of SlaveConnectionStrings is not the same as SlaveWeights</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Duplicate_ColumnAttribute" xml:space="preserve">
|
<data name="Duplicate_ColumnAttribute" xml:space="preserve">
|
||||||
<value>FreeSql:ColumnAttribute. Name {colattrName} exists repeatedly, please check (note: case insensitive)</value>
|
<value>FreeSql:ColumnAttribute. Name {colattrName} exists repeatedly, please check (note: case insensitive)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Duplicate_PropertyName" xml:space="preserve">
|
<data name="Duplicate_PropertyName" xml:space="preserve">
|
||||||
<value>FreeSql:Property name {pName} exists repeatedly, please check (note: case insensitive)</value>
|
<value>FreeSql:Property name {pName} exists repeatedly, please check (note: case insensitive)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Entity_Must_Primary_Key" xml:space="preserve">
|
<data name="Entity_Must_Primary_Key" xml:space="preserve">
|
||||||
<value>FreeSql:The {function} feature requires that the entity class {tableCsName} must have a primary key</value>
|
<value>FreeSql:The {function} feature requires that the entity class {tableCsName} must have a primary key</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Entity_MySQL_VersionsBelow8_NotSupport_Multiple_PrimaryKeys" xml:space="preserve">
|
<data name="Entity_MySQL_VersionsBelow8_NotSupport_Multiple_PrimaryKeys" xml:space="preserve">
|
||||||
<value>FreeSql:{tbTypeFullName} is a parent-child relationship, but combinations of multiple primary keys are not supported in versions below MySql 8.0</value>
|
<value>FreeSql:{tbTypeFullName} is a parent-child relationship, but combinations of multiple primary keys are not supported in versions below MySql 8.0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Entity_NotParentChild_Relationship" xml:space="preserve">
|
<data name="Entity_NotParentChild_Relationship" xml:space="preserve">
|
||||||
<value>FreeSql:{tbTypeFullName} is not a parent-child relationship and cannot be used</value>
|
<value>FreeSql:{tbTypeFullName} is not a parent-child relationship and cannot be used</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EspeciallySubquery_Cannot_Parsing" xml:space="preserve">
|
<data name="EspeciallySubquery_Cannot_Parsing" xml:space="preserve">
|
||||||
<value>FreeSql:This particular subquery cannot be resolved</value>
|
<value>FreeSql:This particular subquery cannot be resolved</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Expression_Error_Use_ParameterExpression" xml:space="preserve">
|
<data name="Expression_Error_Use_ParameterExpression" xml:space="preserve">
|
||||||
<value>FreeSql:Expression error, its top object is not ParameterExpression:{exp}</value>
|
<value>FreeSql:Expression error, its top object is not ParameterExpression:{exp}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Expression_Error_Use_Successive_MemberAccess_Type" xml:space="preserve">
|
<data name="Expression_Error_Use_Successive_MemberAccess_Type" xml:space="preserve">
|
||||||
<value>FreeSql:Expression error, it is not a continuous MemberAccess type: {exp}</value>
|
<value>FreeSql:Expression error, it is not a continuous MemberAccess type: {exp}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ExpressionTree_Convert_Type_Error" xml:space="preserve">
|
<data name="ExpressionTree_Convert_Type_Error" xml:space="preserve">
|
||||||
<value>FreeSql:ExpressionTree conversion type error, value ({value}), type ({valueTypeFullName}), target type ({typeFullName}), Error:{exMessage}</value>
|
<value>FreeSql:ExpressionTree conversion type error, value ({value}), type ({valueTypeFullName}), target type ({typeFullName}), Error:{exMessage}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Failed_SubTable_FieldValue" xml:space="preserve">
|
<data name="Failed_SubTable_FieldValue" xml:space="preserve">
|
||||||
<value>FreeSql:Failed to parse table field value {sqlWhere}</value>
|
<value>FreeSql:Failed to parse table field value {sqlWhere}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Functions_AsTable_NotImplemented" xml:space="preserve">
|
<data name="Functions_AsTable_NotImplemented" xml:space="preserve">
|
||||||
<value>FreeSql:Function {asTable} not implemented by AsTable</value>
|
<value>FreeSql:Function {asTable} not implemented by AsTable</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GBase_NotSupport_OtherThanCommas" xml:space="preserve">
|
<data name="GBase_NotSupport_OtherThanCommas" xml:space="preserve">
|
||||||
<value>FreeSql:GBase does not support separators other than commas at this time</value>
|
<value>FreeSql:GBase does not support separators other than commas at this time</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Generated_Same_SubTable" xml:space="preserve">
|
<data name="Generated_Same_SubTable" xml:space="preserve">
|
||||||
<value>FreeSql:TableName:{tableName} generated the same table name</value>
|
<value>FreeSql:TableName:{tableName} generated the same table name</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GetPrimarys_ParameterError_IsNotDictKey " xml:space="preserve">
|
<data name="GetPrimarys_ParameterError_IsNotDictKey " xml:space="preserve">
|
||||||
<value>FreeSql:The parameter'{primary}'passed by GetPrimarys is incorrect and does not belong to the key name of the dictionary data</value>
|
<value>FreeSql:The parameter'{primary}'passed by GetPrimarys is incorrect and does not belong to the key name of the dictionary data</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Has_Specified_Cannot_Specified_Second" xml:space="preserve">
|
<data name="Has_Specified_Cannot_Specified_Second" xml:space="preserve">
|
||||||
<value>FreeSql:{first} has already been specified and {second} can no longer be specified</value>
|
<value>FreeSql:{first} has already been specified and {second} can no longer be specified</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Ignored_Check_Confirm_PublicGetSet" xml:space="preserve">
|
<data name="Ignored_Check_Confirm_PublicGetSet" xml:space="preserve">
|
||||||
<value>FreeSql:{tb2DbName}. {mp2MemberName} is ignored. Check the IsIgnore setting to make sure get/set is public</value>
|
<value>FreeSql:{tb2DbName}. {mp2MemberName} is ignored. Check the IsIgnore setting to make sure get/set is public</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Include_ParameterType_Error" xml:space="preserve">
|
<data name="Include_ParameterType_Error" xml:space="preserve">
|
||||||
<value>FreeSql:Include parameter type error</value>
|
<value>FreeSql:Include parameter type error</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Include_ParameterType_Error_Use_IncludeMany" xml:space="preserve">
|
<data name="Include_ParameterType_Error_Use_IncludeMany" xml:space="preserve">
|
||||||
<value>FreeSql:Include parameter type is wrong, use IncludeMany for collection properties</value>
|
<value>FreeSql:Include parameter type is wrong, use IncludeMany for collection properties</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Include_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
<data name="Include_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
||||||
<value>FreeSql:Include parameter type is wrong, expression type should be MemberAccess</value>
|
<value>FreeSql:Include parameter type is wrong, expression type should be MemberAccess</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="IncludeMany_NotValid_Navigation" xml:space="preserve">
|
<data name="IncludeMany_NotValid_Navigation" xml:space="preserve">
|
||||||
<value>FreeSql:The property {collMemMemberName} of IncludeMany type {tbTypeDisplayCsharp} is not a valid navigation property, hint: IsIgnore = true will not be a navigation property</value>
|
<value>FreeSql:The property {collMemMemberName} of IncludeMany type {tbTypeDisplayCsharp} is not a valid navigation property, hint: IsIgnore = true will not be a navigation property</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="IncludeMany_ParameterError_OnlyUseOneParameter" xml:space="preserve">
|
<data name="IncludeMany_ParameterError_OnlyUseOneParameter" xml:space="preserve">
|
||||||
<value>FreeSql:IncludeMany {navigateSelector} parameter is wrong, Select can only use one parameter's method, the correct format:.Select(t =>new TNavigate{{}})</value>
|
<value>FreeSql:IncludeMany {navigateSelector} parameter is wrong, Select can only use one parameter's method, the correct format:.Select(t =>new TNavigate{{}})</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="IncludeMany_ParameterError_Select_ReturnConsistentType" xml:space="preserve">
|
<data name="IncludeMany_ParameterError_Select_ReturnConsistentType" xml:space="preserve">
|
||||||
<value>FreeSql:IncludeMany {navigateSelector} parameter error, Select lambda parameter return value must match {collMemElementType} type</value>
|
<value>FreeSql:IncludeMany {navigateSelector} parameter error, Select lambda parameter return value must match {collMemElementType} type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="IncludeMany_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
<data name="IncludeMany_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
||||||
<value>FreeSql:IncludeMany parameter 1 has wrong type, expression type should be MemberAccess</value>
|
<value>FreeSql:IncludeMany parameter 1 has wrong type, expression type should be MemberAccess</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="IncludeMany_ParameterTypeError" xml:space="preserve">
|
<data name="IncludeMany_ParameterTypeError" xml:space="preserve">
|
||||||
<value>FreeSql:IncludeMany {navigateSelector} parameter type is wrong, correct format: a.collections.Take(1).Where(c => C.A ID == a.id).Select (a => new TNavigate{{}})</value>
|
<value>FreeSql:IncludeMany {navigateSelector} parameter type is wrong, correct format: a.collections.Take(1).Where(c => C.A ID == a.id).Select (a => new TNavigate{{}})</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InsertInto_No_Property_Selected" xml:space="preserve">
|
<data name="InsertInto_No_Property_Selected" xml:space="preserve">
|
||||||
<value>FreeSql:ISelect. InsertInto() did not select an attribute: {displayCsharp}</value>
|
<value>FreeSql:ISelect. InsertInto() did not select an attribute: {displayCsharp}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InsertInto_TypeError" xml:space="preserve">
|
<data name="InsertInto_TypeError" xml:space="preserve">
|
||||||
<value>FreeSql:ISelect. InsertInto() type error: {displayCsharp}</value>
|
<value>FreeSql:ISelect. InsertInto() type error: {displayCsharp}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InsertOrUpdate_Must_Primary_Key" xml:space="preserve">
|
<data name="InsertOrUpdate_Must_Primary_Key" xml:space="preserve">
|
||||||
<value>FreeSql:The InsertOrUpdate function performs merge into requiring the entity class {CsName} to have a primary key</value>
|
<value>FreeSql:The InsertOrUpdate function performs merge into requiring the entity class {CsName} to have a primary key</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="InsertOrUpdate_NotSuport_Generic_UseEntity" xml:space="preserve">
|
<data name="InsertOrUpdate_NotSuport_Generic_UseEntity" xml:space="preserve">
|
||||||
<value>FreeSql:The generic parameter for InsertOrUpdate<>does not support {typeofT1}. Pass in your entity class</value>
|
<value>FreeSql:The generic parameter for InsertOrUpdate<>does not support {typeofT1}. Pass in your entity class</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Install_FreeSql_Extensions_LazyLoading" xml:space="preserve">
|
<data name="Install_FreeSql_Extensions_LazyLoading" xml:space="preserve">
|
||||||
<value>FreeSql:FreeSql needs to be installed for Delayed Loading. Extensions. LazyLoading. Dll, downloadable to nuget</value>
|
<value>FreeSql:FreeSql needs to be installed for Delayed Loading. Extensions. LazyLoading. Dll, downloadable to nuget</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LazyLoading_CompilationError" xml:space="preserve">
|
<data name="LazyLoading_CompilationError" xml:space="preserve">
|
||||||
<value>FreeSql:{trytbTypeName} Compilation error: {exMessage}\r\n\r\n{cscode}</value>
|
<value>FreeSql:{trytbTypeName} Compilation error: {exMessage}\r\n\r\n{cscode}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LazyLoading_EntityMustDeclarePublic" xml:space="preserve">
|
<data name="LazyLoading_EntityMustDeclarePublic" xml:space="preserve">
|
||||||
<value>FreeSql:Entity type {trytbTypeName} must be declared public</value>
|
<value>FreeSql:Entity type {trytbTypeName} must be declared public</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ManyToMany_AsSelect_NotSupport_Sum_Avg_etc" xml:space="preserve">
|
<data name="ManyToMany_AsSelect_NotSupport_Sum_Avg_etc" xml:space="preserve">
|
||||||
<value>FreeSql:ManyToMany navigation properties. AsSelect() is temporarily unavailable for the Sum/Avg/Max/Min/First/ToOne/ToList method</value>
|
<value>FreeSql:ManyToMany navigation properties. AsSelect() is temporarily unavailable for the Sum/Avg/Max/Min/First/ToOne/ToList method</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ManyToMany_NotFound_CorrespondingField" xml:space="preserve">
|
<data name="ManyToMany_NotFound_CorrespondingField" xml:space="preserve">
|
||||||
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} did not find a corresponding field in {tbmidCsName}, such as: {midTypePropsTrytbName}{findtrytbPkCsName}, {midTypePropsTrytbName}_ {findtrytbPkCsName}</value>
|
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} did not find a corresponding field in {tbmidCsName}, such as: {midTypePropsTrytbName}{findtrytbPkCsName}, {midTypePropsTrytbName}_ {findtrytbPkCsName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ManyToMany_ParsingError_EntityMissing_PrimaryKey" xml:space="preserve">
|
<data name="ManyToMany_ParsingError_EntityMissing_PrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {tbrefTypeName} missing primary key identity, [Column (IsPrimary = true)]</value>
|
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {tbrefTypeName} missing primary key identity, [Column (IsPrimary = true)]</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ManyToMany_ParsingError_EntityMustHas_NavigateCollection" xml:space="preserve">
|
<data name="ManyToMany_ParsingError_EntityMustHas_NavigateCollection" xml:space="preserve">
|
||||||
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {tbrefTypeName} must have a corresponding [Navigate (ManyToMany = x)] collection property</value>
|
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {tbrefTypeName} must have a corresponding [Navigate (ManyToMany = x)] collection property</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ManyToMany_ParsingError_InconsistentType" xml:space="preserve">
|
<data name="ManyToMany_ParsingError_InconsistentType" xml:space="preserve">
|
||||||
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, {tbmidCsName}. {trycolCsName} and {trytbCsName}. {trytbPrimarysCsName} type inconsistent</value>
|
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, {tbmidCsName}. {trycolCsName} and {trytbCsName}. {trytbPrimarysCsName} type inconsistent</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ManyToMany_ParsingError_IntermediateClass_ErrorMessage" xml:space="preserve">
|
<data name="ManyToMany_ParsingError_IntermediateClass_ErrorMessage" xml:space="preserve">
|
||||||
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, intermediate class {tbmidCsName}.{midTypePropsTrytbName} Error: {exMessage}</value>
|
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, intermediate class {tbmidCsName}.{midTypePropsTrytbName} Error: {exMessage}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ManyToMany_ParsingError_IntermediateClass_NotManyToOne_OneToOne" xml:space="preserve">
|
<data name="ManyToMany_ParsingError_IntermediateClass_NotManyToOne_OneToOne" xml:space="preserve">
|
||||||
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, intermediate class {tbmidCsName}. The {midTypePropsTrytbName} navigation property is not ManyToOne or OneToOne</value>
|
<value>FreeSql:[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, intermediate class {tbmidCsName}. The {midTypePropsTrytbName} navigation property is not ManyToOne or OneToOne</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Mapping_Exception_HasNo_SamePropertyName" xml:space="preserve">
|
<data name="Mapping_Exception_HasNo_SamePropertyName" xml:space="preserve">
|
||||||
<value>FreeSql:Mapping exception: {name} None of the property names are the same</value>
|
<value>FreeSql:Mapping exception: {name} None of the property names are the same</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="MasterPool_IsNull_UseTransaction" xml:space="preserve">
|
<data name="MasterPool_IsNull_UseTransaction" xml:space="preserve">
|
||||||
<value>FreeSql:Ado. MasterPool value is null, this operation cannot self-enable transactions, please explicitly pass [transaction object] resolution</value>
|
<value>FreeSql:Ado. MasterPool value is null, this operation cannot self-enable transactions, please explicitly pass [transaction object] resolution</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Missing_FreeSqlProvider_Package" xml:space="preserve">
|
<data name="Missing_FreeSqlProvider_Package" xml:space="preserve">
|
||||||
<value>FreeSql:Missing FreeSql database implementation package: FreeSql. Provider. {Provider}. Dll, downloadable to nuget</value>
|
<value>FreeSql:Missing FreeSql database implementation package: FreeSql.Provider.{Provider}.Dll, downloadable to nuget</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Missing_FreeSqlProvider_Package_Reason" xml:space="preserve">
|
<data name="Missing_FreeSqlProvider_Package_Reason" xml:space="preserve">
|
||||||
<value>FreeSql:The FreeSql database implementation package is missing: {dll} can be downloaded to nuget; If there is {dll} and an error still occurs (due to environmental issues that cause the type to be unreflected), manually pass in typeof ({providerType}) in the third parameter of UseConnectionString/UseConnectionFactory</value>
|
<value>FreeSql:The FreeSql database implementation package is missing: {dll} can be downloaded to nuget; If there is {dll} and an error still occurs (due to environmental issues that cause the type to be unreflected), manually pass in typeof ({providerType}) in the third parameter of UseConnectionString/UseConnectionFactory</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Navigation_Bind_Number_Different" xml:space="preserve">
|
<data name="Navigation_Bind_Number_Different" xml:space="preserve">
|
||||||
<value>FreeSql:Navigation property {trytbTypeName}. The number of {pnvName} attributes [Navigate] Binds ({bindColumnsCount}) is different from the number of external primary keys ({tbrefPrimarysLength})</value>
|
<value>FreeSql:Navigation property {trytbTypeName}. The number of {pnvName} attributes [Navigate] Binds ({bindColumnsCount}) is different from the number of external primary keys ({tbrefPrimarysLength})</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Navigation_Missing_AsSelect" xml:space="preserve">
|
<data name="Navigation_Missing_AsSelect" xml:space="preserve">
|
||||||
<value>FreeSql:{tb2DbName}. {mp2MemberName} Navigation Property Collection forgotten. AsSelect()? If used in ToList (a => a. {mp2MemberName}), step by step to refer to the IncludeMany document.</value>
|
<value>FreeSql:{tb2DbName}. {mp2MemberName} Navigation Property Collection forgotten. AsSelect()? If used in ToList (a => a. {mp2MemberName}), step by step to refer to the IncludeMany document.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Navigation_Missing_SetProperty" xml:space="preserve">
|
<data name="Navigation_Missing_SetProperty" xml:space="preserve">
|
||||||
<value>FreeSql:[Navigation Properties]{trytbTypeDisplayCsharp}. Missing set attribute for {pName}</value>
|
<value>FreeSql:[Navigation Properties]{trytbTypeDisplayCsharp}. Missing set attribute for {pName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Navigation_NotFound_CorrespondingField" xml:space="preserve">
|
<data name="Navigation_NotFound_CorrespondingField" xml:space="preserve">
|
||||||
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} No corresponding fields were found, such as: {pnvName}{findtbrefPkCsName}, {pnvName}_ {findtbrefPkCsName}. Or use the [Navigate] attribute to specify the relationship mapping.</value>
|
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} No corresponding fields were found, such as: {pnvName}{findtbrefPkCsName}, {pnvName}_ {findtbrefPkCsName}. Or use the [Navigate] attribute to specify the relationship mapping.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Navigation_ParsingError_EntityMissingPrimaryKey" xml:space="preserve">
|
<data name="Navigation_ParsingError_EntityMissingPrimaryKey" xml:space="preserve">
|
||||||
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {trytcTypeName} missing primary key identity, [Column (IsPrimary = true)]</value>
|
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {trytcTypeName} missing primary key identity, [Column (IsPrimary = true)]</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Navigation_ParsingError_InconsistentType" xml:space="preserve">
|
<data name="Navigation_ParsingError_InconsistentType" xml:space="preserve">
|
||||||
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} parsing error, {trytbCsName}. {trycolCsName} and {tbrefCsName}. {tbrefPrimarysCsName} type inconsistent</value>
|
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} parsing error, {trytbCsName}. {trycolCsName} and {tbrefCsName}. {tbrefPrimarysCsName} type inconsistent</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Navigation_ParsingError_NotFound_Property" xml:space="preserve">
|
<data name="Navigation_ParsingError_NotFound_Property" xml:space="preserve">
|
||||||
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} attribute [Navigate] parsing error, property not found at {tbrefTypeName}: {bi}</value>
|
<value>FreeSql:Navigation property {trytbTypeName}. {pnvName} attribute [Navigate] parsing error, property not found at {tbrefTypeName}: {bi}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoPrimaryKey_UseSetDto" xml:space="preserve">
|
<data name="NoPrimaryKey_UseSetDto" xml:space="preserve">
|
||||||
<value>FreeSql:{tableTypeDisplayCsharp} has no primary key defined and cannot use SetSource. Try SetDto</value>
|
<value>FreeSql:{tableTypeDisplayCsharp} has no primary key defined and cannot use SetSource. Try SetDto</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NoProperty_Defined" xml:space="preserve">
|
<data name="NoProperty_Defined" xml:space="preserve">
|
||||||
<value>FreeSql:No properties defined</value>
|
<value>FreeSql:No properties defined</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Implemented" xml:space="preserve">
|
<data name="Not_Implemented" xml:space="preserve">
|
||||||
<value>FreeSql:Not implemented</value>
|
<value>FreeSql:Not implemented</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Implemented_Expression" xml:space="preserve">
|
<data name="Not_Implemented_Expression" xml:space="preserve">
|
||||||
<value>FreeSql:Function expression {exp} parsing not implemented</value>
|
<value>FreeSql:Function expression {exp} parsing not implemented</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Implemented_Expression_ParameterUseConstant" xml:space="preserve">
|
<data name="Not_Implemented_Expression_ParameterUseConstant" xml:space="preserve">
|
||||||
<value>FreeSql:Function expression {exp} parsing not implemented, parameter {expArguments} must be constant</value>
|
<value>FreeSql:Function expression {exp} parsing not implemented, parameter {expArguments} must be constant</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Implemented_Expression_UseAsSelect" xml:space="preserve">
|
<data name="Not_Implemented_Expression_UseAsSelect" xml:space="preserve">
|
||||||
<value>FreeSql:Function expression {exp} parsing is not implemented. Use if you are working on a navigation property collection. AsSelect (). {exp3MethodName} ({exp3ArgumentsCount})</value>
|
<value>FreeSql:Function expression {exp} parsing is not implemented. Use if you are working on a navigation property collection. AsSelect (). {exp3MethodName} ({exp3ArgumentsCount})</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Implemented_MemberAcess_Constant" xml:space="preserve">
|
<data name="Not_Implemented_MemberAcess_Constant" xml:space="preserve">
|
||||||
<value>FreeSql:Constant under MemberAccess is not implemented</value>
|
<value>FreeSql:Constant under MemberAccess is not implemented</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Implemented_Name" xml:space="preserve">
|
<data name="Not_Implemented_Name" xml:space="preserve">
|
||||||
<value>FreeSql:{name} is not implemented</value>
|
<value>FreeSql:{name} is not implemented</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Support" xml:space="preserve">
|
<data name="Not_Support" xml:space="preserve">
|
||||||
<value>FreeSql:I won't support it</value>
|
<value>FreeSql:I won't support it</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Support_OrderByRandom" xml:space="preserve">
|
<data name="Not_Support_OrderByRandom" xml:space="preserve">
|
||||||
<value>FreeSql:{dataType} does not support OrderByRandom sorting</value>
|
<value>FreeSql:{dataType} does not support OrderByRandom sorting</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Not_Valid_Navigation_Property" xml:space="preserve">
|
<data name="Not_Valid_Navigation_Property" xml:space="preserve">
|
||||||
<value>FreeSql:{property} is not a valid navigation property</value>
|
<value>FreeSql:{property} is not a valid navigation property</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_Column" xml:space="preserve">
|
<data name="NotFound_Column" xml:space="preserve">
|
||||||
<value>FreeSql:{dbName} Column {memberName} not found</value>
|
<value>FreeSql:{dbName} Column {memberName} not found</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_CsName_Column" xml:space="preserve">
|
<data name="NotFound_CsName_Column" xml:space="preserve">
|
||||||
<value>FreeSql:Cannot find the column corresponding to {CsName}</value>
|
<value>FreeSql:Cannot find the column corresponding to {CsName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_Property" xml:space="preserve">
|
<data name="NotFound_Property" xml:space="preserve">
|
||||||
<value>FreeSql:Attribute not found: {memberName}</value>
|
<value>FreeSql:Attribute not found: {memberName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_PropertyName" xml:space="preserve">
|
<data name="NotFound_PropertyName" xml:space="preserve">
|
||||||
<value>FreeSql:Property name {proto} not found</value>
|
<value>FreeSql:Property name {proto} not found</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_Reflection" xml:space="preserve">
|
<data name="NotFound_Reflection" xml:space="preserve">
|
||||||
<value>FreeSql:Custom could not find the corresponding {{reflection information}}:{fiValueCustomArray}</value>
|
<value>FreeSql:Custom could not find the corresponding {{reflection information}}:{fiValueCustomArray}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_Static_MethodName" xml:space="preserve">
|
<data name="NotFound_Static_MethodName" xml:space="preserve">
|
||||||
<value>FreeSql:Custom could not find the corresponding {{static method name}}:{fiValueCustomArray}</value>
|
<value>FreeSql:Custom could not find the corresponding {{static method name}}:{fiValueCustomArray}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotFound_Table_Property_AsTable" xml:space="preserve">
|
<data name="NotFound_Table_Property_AsTable" xml:space="preserve">
|
||||||
<value>FreeSql:The property name {atmGroupsValue} set by [Table(AsTable = xx)] does not exist</value>
|
<value>FreeSql:The property name {atmGroupsValue} set by [Table(AsTable = xx)] does not exist</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NotSpecified_UseConnectionString_UseConnectionFactory" xml:space="preserve">
|
<data name="NotSpecified_UseConnectionString_UseConnectionFactory" xml:space="preserve">
|
||||||
<value>FreeSql:No UseConnectionString or UseConnectionFactory specified</value>
|
<value>FreeSql:No UseConnectionString or UseConnectionFactory specified</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ObjectPool_Get_Timeout" xml:space="preserve">
|
<data name="ObjectPool_Get_Timeout" xml:space="preserve">
|
||||||
<value>FreeSql:[{policyName}] ObjectPool. {GetName}() timeout {totalSeconds} seconds, see: https://github.com/dotnetcore/FreeSql/discussions/1081</value>
|
<value>FreeSql:[{policyName}] ObjectPool. {GetName}() timeout {totalSeconds} seconds, see: https://github.com/dotnetcore/FreeSql/discussions/1081</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ObjectPool_GetAsync_Queue_Long" xml:space="preserve">
|
<data name="ObjectPool_GetAsync_Queue_Long" xml:space="preserve">
|
||||||
<value>FreeSql:[{policyName}] ObjectPool. GetAsync() The queue is too long. Policy. AsyncGetCapacity = {asyncGetCapacity}</value>
|
<value>FreeSql:[{policyName}] ObjectPool. GetAsync() The queue is too long. Policy. AsyncGetCapacity = {asyncGetCapacity}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OneToMany_NotFound_CorrespondingField" xml:space="preserve">
|
<data name="OneToMany_NotFound_CorrespondingField" xml:space="preserve">
|
||||||
<value>FreeSql:[OneToMany] Navigation property {trytbTypeName}.{pnvName} did not find a corresponding field in {tbrefCsName}, such as: {findtrytb}{findtrytbPkCsName}, {findtrytb}_{findtrytbPkCsName}</value>
|
<value>FreeSql:[OneToMany] Navigation property {trytbTypeName}.{pnvName} did not find a corresponding field in {tbrefCsName}, such as: {findtrytb}{findtrytbPkCsName}, {findtrytb}_{findtrytbPkCsName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OneToMany_ParsingError_InconsistentType" xml:space="preserve">
|
<data name="OneToMany_ParsingError_InconsistentType" xml:space="preserve">
|
||||||
<value>FreeSql:[OneToMany] Navigation property {trytbTypeName}.{pnvName} parsing error, {trytbCsName}.{trytbPrimarysCsName} and {tbrefCsName}.{trycolCsName} is of inconsistent type</value>
|
<value>FreeSql:[OneToMany] Navigation property {trytbTypeName}.{pnvName} parsing error, {trytbCsName}.{trytbPrimarysCsName} and {tbrefCsName}.{trycolCsName} is of inconsistent type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OneToMany_UseNavigate" xml:space="preserve">
|
<data name="OneToMany_UseNavigate" xml:space="preserve">
|
||||||
<value>FreeSql:, {refpropName}{findtrytbPkCsName}, {refpropName}_{findtrytbPkCsName}. Or use the [Navigate] attribute to specify the relationship mapping.</value>
|
<value>FreeSql:, {refpropName}{findtrytbPkCsName}, {refpropName}_{findtrytbPkCsName}. Or use the [Navigate] attribute to specify the relationship mapping.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Parameter_Field_NotSpecified" xml:space="preserve">
|
<data name="Parameter_Field_NotSpecified" xml:space="preserve">
|
||||||
<value>FreeSql:Parameter field not specified</value>
|
<value>FreeSql:Parameter field not specified</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_NotValid_Collection" xml:space="preserve">
|
<data name="ParameterError_NotValid_Collection" xml:space="preserve">
|
||||||
<value>FreeSql:The {property} parameter is incorrect, it is not a collection property and must be IList<T>or ICollection<T></value>
|
<value>FreeSql:The {property} parameter is incorrect, it is not a collection property and must be IList<T>or ICollection<T></value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_NotValid_Navigation" xml:space="preserve">
|
<data name="ParameterError_NotValid_Navigation" xml:space="preserve">
|
||||||
<value>FreeSql:The {property} parameter is incorrect, it is not a valid navigation property</value>
|
<value>FreeSql:The {property} parameter is incorrect, it is not a valid navigation property</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_NotValid_PropertyName" xml:space="preserve">
|
<data name="ParameterError_NotValid_PropertyName" xml:space="preserve">
|
||||||
<value>FreeSql:{where} parameter error, {keyval} is not a valid property name and cannot be found in entity class {reftbTypeDisplayCsharp}</value>
|
<value>FreeSql:{where} parameter error, {keyval} is not a valid property name and cannot be found in entity class {reftbTypeDisplayCsharp}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ParameterError_NotValid_UseCommas" xml:space="preserve">
|
<data name="ParameterError_NotValid_UseCommas" xml:space="preserve">
|
||||||
<value>FreeSql:{property} parameter error, format "TopicId=Id, multiple groups using comma connection"</value>
|
<value>FreeSql:{property} parameter error, format "TopicId=Id, multiple groups using comma connection"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Parsing_Failed" xml:space="preserve">
|
<data name="Parsing_Failed" xml:space="preserve">
|
||||||
<value>FreeSql:Parsing failed {callExpMethodName} {message}</value>
|
<value>FreeSql:Parsing failed {callExpMethodName} {message}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Policy_ObjectPool_Dispose" xml:space="preserve">
|
<data name="Policy_ObjectPool_Dispose" xml:space="preserve">
|
||||||
<value>FreeSql:[{policyName}] The ObjectPool has been disposed, see: https://github.com/dotnetcore/FreeSql/discussions/1079</value>
|
<value>FreeSql:[{policyName}] The ObjectPool has been disposed, see: https://github.com/dotnetcore/FreeSql/discussions/1079</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Policy_Status_NotAvailable" xml:space="preserve">
|
<data name="Policy_Status_NotAvailable" xml:space="preserve">
|
||||||
<value>FreeSql:The {policyName} status is unavailable and cannot be used until the background checker is restored. {UnavailableExceptionMessage}</value>
|
<value>FreeSql:The {policyName} status is unavailable and cannot be used until the background checker is restored. {UnavailableExceptionMessage}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Properties_AsRowLock_Must_Numeric_Byte" xml:space="preserve">
|
<data name="Properties_AsRowLock_Must_Numeric_Byte" xml:space="preserve">
|
||||||
<value>FreeSql:The property {trytbVersionColumnCsName} is labeled as a row lock (optimistic lock) (IsVersion), but it must be a numeric type or byte[], and it cannot be Nullable</value>
|
<value>FreeSql:The property {trytbVersionColumnCsName} is labeled as a row lock (optimistic lock) (IsVersion), but it must be a numeric type or byte[], and it cannot be Nullable</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Properties_Cannot_Null" xml:space="preserve">
|
<data name="Properties_Cannot_Null" xml:space="preserve">
|
||||||
<value>FreeSql:Properrties parameter cannot be empty</value>
|
<value>FreeSql:Properrties parameter cannot be empty</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Property_Cannot_Find" xml:space="preserve">
|
<data name="Property_Cannot_Find" xml:space="preserve">
|
||||||
<value>FreeSql:{property} property name not found</value>
|
<value>FreeSql:{property} property name not found</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Range_Comma_Separateda_By2Char" xml:space="preserve">
|
<data name="Range_Comma_Separateda_By2Char" xml:space="preserve">
|
||||||
<value>FreeSql:Range requires that Value be comma-separated and 2-length</value>
|
<value>FreeSql:Range requires that Value be comma-separated and 2-length</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RollBack" xml:space="preserve">
|
<data name="RollBack" xml:space="preserve">
|
||||||
<value>FreeSql:RollBack</value>
|
<value>FreeSql:RollBack</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RunTimeError_Reflection_IncludeMany" xml:space="preserve">
|
<data name="RunTimeError_Reflection_IncludeMany" xml:space="preserve">
|
||||||
<value>FreeSql:Runtime error, reflection failed to get IncludeMany method</value>
|
<value>FreeSql:Runtime error, reflection failed to get IncludeMany method</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Set_Column_IsNullable_False" xml:space="preserve">
|
<data name="Set_Column_IsNullable_False" xml:space="preserve">
|
||||||
<value>FreeSql:{qoteSql} is NULL unless the attribute [Column (IsNullable = false)]</value>
|
<value>FreeSql:{qoteSql} is NULL unless the attribute [Column (IsNullable = false)]</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubTableFieldValue_CannotLessThen" xml:space="preserve">
|
<data name="SubTableFieldValue_CannotLessThen" xml:space="preserve">
|
||||||
<value>FreeSql:Subtable field value'{dt}'cannot be less than'{beginTime}'</value>
|
<value>FreeSql:Subtable field value'{dt}'cannot be less than'{beginTime}'</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubTableFieldValue_IsNotNull" xml:space="preserve">
|
<data name="SubTableFieldValue_IsNotNull" xml:space="preserve">
|
||||||
<value>FreeSql:Subtable field value cannot be null</value>
|
<value>FreeSql:Subtable field value cannot be null</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubTableFieldValue_NotConvertDateTime" xml:space="preserve">
|
<data name="SubTableFieldValue_NotConvertDateTime" xml:space="preserve">
|
||||||
<value>FreeSql:The tabular field value'{columnValue}'cannot be converted to DateTime</value>
|
<value>FreeSql:The tabular field value'{columnValue}'cannot be converted to DateTime</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubTableFieldValue_NotMatchTable" xml:space="preserve">
|
<data name="SubTableFieldValue_NotMatchTable" xml:space="preserve">
|
||||||
<value>FreeSql:Table field value'{dt}'does not match table name</value>
|
<value>FreeSql:Table field value'{dt}'does not match table name</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="T2_Type_Error" xml:space="preserve">
|
<data name="T2_Type_Error" xml:space="preserve">
|
||||||
<value>FreeSql:Type T2 Error</value>
|
<value>FreeSql:Type T2 Error</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TableName_Format_Error" xml:space="preserve">
|
<data name="TableName_Format_Error" xml:space="preserve">
|
||||||
<value>FreeSql:TableName format error, example: "log_{yyyyMMdd}"</value>
|
<value>FreeSql:TableName format error, example: "log_{yyyyMMdd}"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Type_AsType_Parameter_Error" xml:space="preserve">
|
<data name="Type_AsType_Parameter_Error" xml:space="preserve">
|
||||||
<value>FreeSql:{Type}. AsType parameter error, please pass in the correct entity type</value>
|
<value>FreeSql:{Type}. AsType parameter error, please pass in the correct entity type</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Type_Cannot_Access_Constructor" xml:space="preserve">
|
<data name="Type_Cannot_Access_Constructor" xml:space="preserve">
|
||||||
<value>FreeSql:The {thatFullName} type cannot access the constructor</value>
|
<value>FreeSql:The {thatFullName} type cannot access the constructor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Type_Error_Name" xml:space="preserve">
|
<data name="Type_Error_Name" xml:space="preserve">
|
||||||
<value>FreeSql:{name} type error</value>
|
<value>FreeSql:{name} type error</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeAsType_NotSupport_Object" xml:space="preserve">
|
<data name="TypeAsType_NotSupport_Object" xml:space="preserve">
|
||||||
<value>FreeSql:{Type}. AsType parameter does not support specifying as object</value>
|
<value>FreeSql:{Type}. AsType parameter does not support specifying as object</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeError_CannotUse_IncludeMany" xml:space="preserve">
|
<data name="TypeError_CannotUse_IncludeMany" xml:space="preserve">
|
||||||
<value>FreeSql:Type {typeofFullName} error, IncludeMany cannot be used</value>
|
<value>FreeSql:Type {typeofFullName} error, IncludeMany cannot be used</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Unable_Parse_Expression" xml:space="preserve">
|
<data name="Unable_Parse_Expression" xml:space="preserve">
|
||||||
<value>FreeSql:Unable to parse expression: {exp}</value>
|
<value>FreeSql:Unable to parse expression: {exp}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Unable_Parse_ExpressionMethod" xml:space="preserve">
|
<data name="Unable_Parse_ExpressionMethod" xml:space="preserve">
|
||||||
<value>FreeSql:Unable to parse expression method {exp3tmpCallMethodName}</value>
|
<value>FreeSql:Unable to parse expression method {exp3tmpCallMethodName}</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Use_InsertDict_Method" xml:space="preserve">
|
<data name="Use_InsertDict_Method" xml:space="preserve">
|
||||||
<value>FreeSql:Please use fsql. InsertDict (dict) method inserts dictionary data</value>
|
<value>FreeSql:Please use fsql. InsertDict (dict) method inserts dictionary data</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
<data name="S_NotFound_Name" xml:space="preserve">
|
||||||
|
<value>FreeSql:{name} not found</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_SlaveDatabase" xml:space="preserve">
|
||||||
|
<value>FreeSql:Slave Database</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_MasterDatabase" xml:space="preserve">
|
||||||
|
<value>FreeSql:Master Database</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Access_InsertOnlyOneAtTime" xml:space="preserve">
|
||||||
|
<value>FreeSql:Egg pain Accs insertion can only be performed one at a time, values (..) are not supported. (..) Select is also not supported.. UNION ALL select..</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_BaseEntity_Initialization_Error" xml:space="preserve">
|
||||||
|
<value>FreeSql:BaseEntity. Initialization initialization error, get IFreeSql is null</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_BlockAccess_WaitForRecovery" xml:space="preserve">
|
||||||
|
<value>FreeSql:[{thisName}] Block access and wait for recovery: {exMessage}</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_CannotBeConverted_To_ISelect" xml:space="preserve">
|
||||||
|
<value>FreeSql:IQueryable<{typeofName}> cannot be converted to ISelect<{typeofName}> because its implementation is not FreeSql.Extensions.Linq.QueryableProvider</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError" xml:space="preserve">
|
||||||
|
<value>FreeSql:Connection string error</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError_Check" xml:space="preserve">
|
||||||
|
<value>FreeSql:[{thisName}] Connection string error, please check.</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError_CheckProject " xml:space="preserve">
|
||||||
|
<value>FreeSql:Connection string error, or check project properties > Build > Target Platform: x86 | x64</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError_CheckProjectConnection" xml:space="preserve">
|
||||||
|
<value>FreeSql:[{thisName}] Connection string error, please check. Or check Project Properties > Build > Target Platform: x86 | x64</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_CustomAdapter_Cannot_Use_CreateCommand" xml:space="preserve">
|
||||||
|
<value>FreeSql:FreeSql.Provider.CustomAdapter cannot use CreateCommand</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_CustomAdapter_OnlySuppport_UseConnectionFactory " xml:space="preserve">
|
||||||
|
<value>FreeSql:FreeSql.Provider.CustomAdapter only supports building IFreeSql in the UseConnectionFactory way</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Dameng_NotSupport_TablespaceSchemas " xml:space="preserve">
|
||||||
|
<value>FreeSql:Dream CodeFirst does not support code creation tablespace and schemas {tbname}</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_DB_Parameter_Error_NoConnectionString" xml:space="preserve">
|
||||||
|
<value>FreeSql:-DB parameter error, no ConnectionString provided</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_DB_ParameterError" xml:space="preserve">
|
||||||
|
<value>FreeSql:-DB parameter error, format: MySql, ConnectionString</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_DB_ParameterError_UnsupportedType" xml:space="preserve">
|
||||||
|
<value>FreeSql:-DB parameter error, unsupported type: "{dbargs}"</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Features_Unique" xml:space="preserve">
|
||||||
|
<value>FreeSql:{method} is FreeSql.Provider.{provider} specific features</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_InsertOrUpdate_Unable_UpdateColumns" xml:space="preserve">
|
||||||
|
<value>FreeSql:Fsql. InsertOrUpdate Sqlite was unable to complete the UpdateColumns operation</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_MygisGeometry_NotImplement" xml:space="preserve">
|
||||||
|
<value>FreeSql:MygisGeometry. Parse does not implement "{wkt}"</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_NameOptions_Incorrect" xml:space="preserve">
|
||||||
|
<value>FreeSql:-NameOptions parameter incorrect, format: 0,0,0,0</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Not_Implemented_Feature" xml:space="preserve">
|
||||||
|
<value>FreeSql:This function is not implemented</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Not_Implemented_FeedBack" xml:space="preserve">
|
||||||
|
<value>FreeSql:Unrealized error, please feedback to author</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_NotImplementSkipOffset" xml:space="preserve">
|
||||||
|
<value>FreeSql:FreeSql.Provider.{providerName} does not implement Skip/Offset functionality, use to determine last ID if paging is required</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_OldTableExists" xml:space="preserve">
|
||||||
|
<value>FreeSql:Old table (OldName): {tboldname} exists, database already exists {tbname} table, cannot rename</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_OnConflictDoUpdate_MustIsPrimary" xml:space="preserve">
|
||||||
|
<value>FreeSql:The OnConflictDoUpdate feature requires that entity classes must set the IsPrimary property</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Oracle_NotSupport_TablespaceSchemas" xml:space="preserve">
|
||||||
|
<value>FreeSql:Oracle CodeFirst does not support code creation of tablespace and schemas {tbname}</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_ParsingFailed_UseRestoreToSelect" xml:space="preserve">
|
||||||
|
<value>FreeSql:Parsing failed {callExpMethodName} {message}, hint: Extension method IQueryable can be used. RestoreToSelect() reverted to ISelect re-query</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_RequiresEntityPrimaryKey" xml:space="preserve">
|
||||||
|
<value>FreeSql:Fsql. InsertOrUpdate + IfExistsDoNothing + {providerName} requires the entity class {tableCsName} to have a primary key</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_SelectManayErrorType" xml:space="preserve">
|
||||||
|
<value>FreeSql:SelectMany error type: {typeFullName}</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Type_IsNot_Migrable" xml:space="preserve">
|
||||||
|
<value>FreeSql:Type {objentityTypeFullName} is not migrable</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_Type_IsNot_Migrable_0Attributes" xml:space="preserve">
|
||||||
|
<value>FreeSql:Type {objentityTypeFullName} is not migrable, migratable property 0</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_TypeMappingNotImplemented" xml:space="preserve">
|
||||||
|
<value>FreeSql:{columnDbTypeTextFull} type mapping not implemented</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_WrongParameter" xml:space="preserve">
|
||||||
|
<value>FreeSql:Wrong parameter setting: {args}</value>
|
||||||
|
</data>
|
||||||
|
<data name="S_ObjectPool" xml:space="preserve">
|
||||||
|
<value>FreeSql:Object pool</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
@ -450,6 +450,146 @@
|
|||||||
<data name="RunTimeError_Reflection_IncludeMany" xml:space="preserve">
|
<data name="RunTimeError_Reflection_IncludeMany" xml:space="preserve">
|
||||||
<value>运行时错误,反射获取 IncludeMany 方法失败</value>
|
<value>运行时错误,反射获取 IncludeMany 方法失败</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="S_Access_InsertOnlyOneAtTime" xml:space="preserve">
|
||||||
|
<value>蛋疼的 Access 插入只能一条一条执行,不支持 values(..),(..) 也不支持 select .. UNION ALL select ..</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_BaseEntity_Initialization_Error" xml:space="preserve">
|
||||||
|
<value>BaseEntity.Initialization 初始化错误,获取到 IFreeSql 是 null</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_BlockAccess_WaitForRecovery" xml:space="preserve">
|
||||||
|
<value>【{thisName}】Block access and wait for recovery: {exMessage}</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_CannotBeConverted_To_ISelect" xml:space="preserve">
|
||||||
|
<value>无法将 IQueryable<{typeofName}> 转换为 ISelect<{typeofName}>,因为他的实现不是 FreeSql.Extensions.Linq.QueryableProvider</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError" xml:space="preserve">
|
||||||
|
<value>连接字符串错误</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError_Check" xml:space="preserve">
|
||||||
|
<value>【{thisName}】连接字符串错误,请检查。</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError_CheckProject " xml:space="preserve">
|
||||||
|
<value>连接字符串错误,或者检查项目属性 > 生成 > 目标平台:x86 | x64</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_ConnectionStringError_CheckProjectConnection" xml:space="preserve">
|
||||||
|
<value>【{thisName}】连接字符串错误,请检查。或者检查项目属性 > 生成 > 目标平台:x86 | x64</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_CustomAdapter_Cannot_Use_CreateCommand" xml:space="preserve">
|
||||||
|
<value>FreeSql.Provider.CustomAdapter 无法使用 CreateCommand</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_CustomAdapter_OnlySuppport_UseConnectionFactory " xml:space="preserve">
|
||||||
|
<value>FreeSql.Provider.CustomAdapter 仅支持 UseConnectionFactory 方式构建 IFreeSql</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_Dameng_NotSupport_TablespaceSchemas " xml:space="preserve">
|
||||||
|
<value>达梦 CodeFirst 不支持代码创建 tablespace 与 schemas {tbname}</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_DB_Parameter_Error_NoConnectionString" xml:space="preserve">
|
||||||
|
<value>-DB 参数错误,未提供 ConnectionString</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_DB_ParameterError" xml:space="preserve">
|
||||||
|
<value>-DB 参数错误,格式为:MySql,ConnectionString</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_DB_ParameterError_UnsupportedType" xml:space="preserve">
|
||||||
|
<value>-DB 参数错误,不支持的类型:"{dbargs}"</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_Features_Unique" xml:space="preserve">
|
||||||
|
<value>{method} 是 FreeSql.Provider.{provider} 特有的功能</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_InsertOrUpdate_Unable_UpdateColumns" xml:space="preserve">
|
||||||
|
<value>fsql.InsertOrUpdate Sqlite 无法完成 UpdateColumns 操作</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_MasterDatabase" xml:space="preserve">
|
||||||
|
<value>主库</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_MygisGeometry_NotImplement" xml:space="preserve">
|
||||||
|
<value>MygisGeometry.Parse 未实现 "{wkt}"</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_NameOptions_Incorrect" xml:space="preserve">
|
||||||
|
<value>-NameOptions 参数错误,格式为:0,0,0,0</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_Not_Implemented_Feature" xml:space="preserve">
|
||||||
|
<value> 未实现该功能</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_Not_Implemented_FeedBack" xml:space="preserve">
|
||||||
|
<value>未实现错误,请反馈给作者</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_NotFound_Name" xml:space="preserve">
|
||||||
|
<value>找不到 {name}</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_NotImplementSkipOffset" xml:space="preserve">
|
||||||
|
<value>FreeSql.Provider.{providerName} 未实现 Skip/Offset 功能,如果需要分页请使用判断上一次 id</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_ObjectPool" xml:space="preserve">
|
||||||
|
<value>对象池</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_OldTableExists" xml:space="preserve">
|
||||||
|
<value>旧表(OldName):{tboldname} 存在,数据库已存在 {tbname} 表,无法改名</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_OnConflictDoUpdate_MustIsPrimary" xml:space="preserve">
|
||||||
|
<value>OnConflictDoUpdate 功能要求实体类必须设置 IsPrimary 属性</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_Oracle_NotSupport_TablespaceSchemas" xml:space="preserve">
|
||||||
|
<value>Oracle CodeFirst 不支持代码创建 tablespace 与 schemas {tbname}</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_ParsingFailed_UseRestoreToSelect" xml:space="preserve">
|
||||||
|
<value>解析失败 {callExpMethodName} {message},提示:可以使用扩展方法 IQueryable.RestoreToSelect() 还原为 ISelect 再查询</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_RequiresEntityPrimaryKey" xml:space="preserve">
|
||||||
|
<value>fsql.InsertOrUpdate + IfExistsDoNothing + {providerName}要求实体类 {tableCsName} 必须有主键</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_SelectManayErrorType" xml:space="preserve">
|
||||||
|
<value>SelectMany 错误的类型:{typeFullName}</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_SlaveDatabase" xml:space="preserve">
|
||||||
|
<value>从库</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_Type_IsNot_Migrable" xml:space="preserve">
|
||||||
|
<value>类型 {objentityTypeFullName} 不可迁移</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_Type_IsNot_Migrable_0Attributes" xml:space="preserve">
|
||||||
|
<value>类型 {objentityTypeFullName} 不可迁移,可迁移属性0个</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_TypeMappingNotImplemented" xml:space="preserve">
|
||||||
|
<value>未实现 {columnDbTypeTextFull} 类型映射</value>
|
||||||
|
<comment>Providers</comment>
|
||||||
|
</data>
|
||||||
|
<data name="S_WrongParameter" xml:space="preserve">
|
||||||
|
<value>错误的参数设置:{args}</value>
|
||||||
|
<comment>Extensions</comment>
|
||||||
|
</data>
|
||||||
<data name="Set_Column_IsNullable_False" xml:space="preserve">
|
<data name="Set_Column_IsNullable_False" xml:space="preserve">
|
||||||
<value>{qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]</value>
|
<value>{qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]</value>
|
||||||
</data>
|
</data>
|
||||||
@ -495,7 +635,4 @@
|
|||||||
<data name="Use_InsertDict_Method" xml:space="preserve">
|
<data name="Use_InsertDict_Method" xml:space="preserve">
|
||||||
<value>请使用 fsql.InsertDict(dict) 方法插入字典数据</value>
|
<value>请使用 fsql.InsertDict(dict) 方法插入字典数据</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="A" xml:space="preserve">
|
|
||||||
<value>Test</value>
|
|
||||||
</data>
|
|
||||||
</root>
|
</root>
|
@ -180,9 +180,12 @@ namespace <#= model.Namespace #>
|
|||||||
result.Class = Path.GetFileNameWithoutExtension(resourceFile);
|
result.Class = Path.GetFileNameWithoutExtension(resourceFile);
|
||||||
|
|
||||||
result.ResourceName = resourceNamespace + "." + result.Class;
|
result.ResourceName = resourceNamespace + "." + result.Class;
|
||||||
|
if(File.Exists(resourceFile.Replace(".resx", ".zh-Hans.resx")))
|
||||||
|
{
|
||||||
|
resourceFile = resourceFile.Replace(".resx", ".zh-Hans.resx");
|
||||||
|
}
|
||||||
List<ResXDataNode> sortedResources;
|
List<ResXDataNode> sortedResources;
|
||||||
using (var reader = new ResXResourceReader(resourceFile.Replace(".resx", ".zh-Hans.resx")))
|
using (var reader = new ResXResourceReader(resourceFile))
|
||||||
{
|
{
|
||||||
reader.UseResXDataNodes = true;
|
reader.UseResXDataNodes = true;
|
||||||
sortedResources = Enumerable.ToList(
|
sortedResources = Enumerable.ToList(
|
||||||
|
@ -23,12 +23,12 @@ namespace FreeSql.ClickHouse
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new ClickHouseConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new ClickHouseConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new ClickHouseConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new ClickHouseConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ namespace FreeSql.ClickHouse
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal ClickHouseConnectionPool _pool;
|
internal ClickHouseConnectionPool _pool;
|
||||||
public string Name { get; set; } = "ClickHouse ClickHouseConnection 对象池";
|
public string Name { get; set; } = $"ClickHouse ClickHouseConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -131,8 +131,8 @@ namespace FreeSql.ClickHouse
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -161,8 +161,8 @@ namespace FreeSql.ClickHouse
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -67,8 +67,8 @@ namespace FreeSql.ClickHouse
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ namespace FreeSql.ClickHouse.Curd
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Provider.ClickHouse 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Provider.ClickHouse {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
public override string ToSql()
|
public override string ToSql()
|
||||||
{
|
{
|
||||||
@ -25,7 +25,7 @@ namespace FreeSql.ClickHouse.Curd
|
|||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.ClickHouse 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.ClickHouse {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ namespace FreeSql.ClickHouse.Curd
|
|||||||
|
|
||||||
public override int ExecuteAffrows() => SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
|
public override int ExecuteAffrows() => SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
|
||||||
public override List<T1> ExecuteUpdated() => SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
|
public override List<T1> ExecuteUpdated() => SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000);
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.ClickHouse.Custom 未实现该功能 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Provider.ClickHouse {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
if (primarys.Length == 1)
|
if (primarys.Length == 1)
|
||||||
@ -293,7 +293,7 @@ namespace FreeSql.ClickHouse.Curd
|
|||||||
#else
|
#else
|
||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 500, _batchParameterLimit > 0 ? _batchParameterLimit : 3000, cancellationToken);
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.ClickHouse.Custom 未实现该功能 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.ClickHouse {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
async protected override Task<int> SplitExecuteAffrowsAsync(int valuesLimit, int parameterLimit, CancellationToken cancellationToken = default)
|
async protected override Task<int> SplitExecuteAffrowsAsync(int valuesLimit, int parameterLimit, CancellationToken cancellationToken = default)
|
||||||
|
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.Custom
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ namespace FreeSql.Custom
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override List<T1> RawExecuteInserted() => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
protected override List<T1> RawExecuteInserted() => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
@ -107,7 +107,7 @@ namespace FreeSql.Custom
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
protected override Task<List<T1>> RawExecuteInsertedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
protected override Task<List<T1>> RawExecuteInsertedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -35,7 +35,7 @@ namespace FreeSql.Custom
|
|||||||
if (_limit > 0 && _utils.Adapter.SelectTopStyle == CustomAdapter.SelecTopStyle.Top) sb.Append("TOP ").Append(_skip + _limit).Append(" ");
|
if (_limit > 0 && _utils.Adapter.SelectTopStyle == CustomAdapter.SelecTopStyle.Top) sb.Append("TOP ").Append(_skip + _limit).Append(" ");
|
||||||
sb.Append(field);
|
sb.Append(field);
|
||||||
if (_skip > 0 && _utils.Adapter.SelectTopStyle == CustomAdapter.SelecTopStyle.Top)
|
if (_skip > 0 && _utils.Adapter.SelectTopStyle == CustomAdapter.SelecTopStyle.Top)
|
||||||
throw new NotImplementedException("FreeSql.Provider.Custom 未实现 Skip/Offset 功能,如果需要分页请使用判断上一次 id");
|
throw new NotImplementedException(CoreStrings.S_NotImplementSkipOffset("Custom"));
|
||||||
|
|
||||||
sb.Append(" \r\nFROM ");
|
sb.Append(" \r\nFROM ");
|
||||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||||
|
@ -23,7 +23,7 @@ namespace FreeSql.Custom
|
|||||||
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
||||||
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
||||||
|
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ namespace FreeSql.Custom
|
|||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
||||||
|
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ namespace FreeSql.Custom
|
|||||||
_CreateParameterCommand = CreateCommand();
|
_CreateParameterCommand = CreateCommand();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw new Exception("FreeSql.Provider.CustomAdapter 仅支持 UseConnectionFactory 方式构建 IFreeSql");
|
throw new Exception(CoreStrings.S_CustomAdapter_OnlySuppport_UseConnectionFactory);
|
||||||
}
|
}
|
||||||
CustomAdapter Adapter => (_util == null ? FreeSqlCustomAdapterGlobalExtensions.DefaultAdapter : _util._orm.GetCustomAdapter());
|
CustomAdapter Adapter => (_util == null ? FreeSqlCustomAdapterGlobalExtensions.DefaultAdapter : _util._orm.GetCustomAdapter());
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ namespace FreeSql.Custom
|
|||||||
cmd.Connection = null;
|
cmd.Connection = null;
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
throw new Exception("FreeSql.Provider.CustomAdapter 无法使用 CreateCommand");
|
throw new Exception(CoreStrings.S_CustomAdapter_Cannot_Use_CreateCommand);
|
||||||
}
|
}
|
||||||
public DbParameter CreateParameter()
|
public DbParameter CreateParameter()
|
||||||
{
|
{
|
||||||
|
@ -90,6 +90,6 @@ namespace FreeSql.Custom
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string GetComparisonDDLStatements(params TypeAndName[] objects) => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
protected override string GetComparisonDDLStatements(params TypeAndName[] objects) => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -18,9 +18,9 @@ namespace FreeSql.Custom
|
|||||||
public override IInsert<T1> CreateInsertProvider<T1>() => new CustomInsert<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression);
|
public override IInsert<T1> CreateInsertProvider<T1>() => new CustomInsert<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression);
|
||||||
public override IUpdate<T1> CreateUpdateProvider<T1>(object dywhere) => new CustomUpdate<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
public override IUpdate<T1> CreateUpdateProvider<T1>(object dywhere) => new CustomUpdate<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
||||||
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere) => new CustomDelete<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere) => new CustomDelete<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
||||||
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>() => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>() => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
public override IDbFirst DbFirst => throw new NotImplementedException("FreeSql.Provider.Custom 未实现该功能");
|
public override IDbFirst DbFirst => throw new NotImplementedException($"FreeSql.Provider.Custom {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
public CustomProvider(string masterConnectionString, string[] slaveConnectionString, Func<DbConnection> connectionFactory = null)
|
public CustomProvider(string masterConnectionString, string[] slaveConnectionString, Func<DbConnection> connectionFactory = null)
|
||||||
{
|
{
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.Dameng.Curd
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Provider.Dameng 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Provider.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.Dameng 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ namespace FreeSql.Dameng.Curd
|
|||||||
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
|
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.Provider.Dameng 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Provider.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ namespace FreeSql.Dameng.Curd
|
|||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
|
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.Dameng 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,12 @@ namespace FreeSql.Dameng
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new DamengConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new DamengConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new DamengConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new DamengConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ namespace FreeSql.Dameng
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal DamengConnectionPool _pool;
|
internal DamengConnectionPool _pool;
|
||||||
public string Name { get; set; } = "Dameng DmConnection 对象池";
|
public string Name { get; set; } = $"Dameng DmConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -130,8 +130,8 @@ namespace FreeSql.Dameng
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -160,8 +160,8 @@ namespace FreeSql.Dameng
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -92,8 +92,8 @@ namespace FreeSql.Dameng
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] };
|
||||||
|
|
||||||
@ -114,7 +114,7 @@ namespace FreeSql.Dameng
|
|||||||
//codefirst 不支持表名中带 .
|
//codefirst 不支持表名中带 .
|
||||||
|
|
||||||
if (string.Compare(tbname[0], userId) != 0 && _orm.Ado.ExecuteScalar(CommandType.Text, _commonUtils.FormatSql(" select 1 from sys.dba_users where username={0}", tbname[0])) == null) //创建数据库
|
if (string.Compare(tbname[0], userId) != 0 && _orm.Ado.ExecuteScalar(CommandType.Text, _commonUtils.FormatSql(" select 1 from sys.dba_users where username={0}", tbname[0])) == null) //创建数据库
|
||||||
throw new NotImplementedException($"达梦 CodeFirst 不支持代码创建 tablespace 与 schemas {tbname[0]}");
|
throw new NotImplementedException(CoreStrings.S_Dameng_NotSupport_TablespaceSchemas(tbname[0]));
|
||||||
|
|
||||||
var sbalter = new StringBuilder();
|
var sbalter = new StringBuilder();
|
||||||
var istmpatler = false; //创建临时表,导入数据,删除旧表,修改
|
var istmpatler = false; //创建临时表,导入数据,删除旧表,修改
|
||||||
|
@ -160,7 +160,7 @@ namespace FreeSql.Dameng
|
|||||||
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
||||||
return DmDbType.VarChar;
|
return DmDbType.VarChar;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException(CoreStrings.S_TypeMappingNotImplemented(column.DbTypeTextFull));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ConcurrentDictionary<string, DbToCs> _dicDbToCs = new ConcurrentDictionary<string, DbToCs>(StringComparer.CurrentCultureIgnoreCase);
|
static ConcurrentDictionary<string, DbToCs> _dicDbToCs = new ConcurrentDictionary<string, DbToCs>(StringComparer.CurrentCultureIgnoreCase);
|
||||||
|
@ -29,7 +29,7 @@ public static partial class FreeSqlDamengGlobalExtensions
|
|||||||
public static void ExecuteDmBulkCopy<T>(this IInsert<T> that, DmBulkCopyOptions copyOptions = DmBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null) where T : class
|
public static void ExecuteDmBulkCopy<T>(this IInsert<T> that, DmBulkCopyOptions copyOptions = DmBulkCopyOptions.Default, int? batchSize = null, int? bulkCopyTimeout = null) where T : class
|
||||||
{
|
{
|
||||||
var insert = that as FreeSql.Dameng.Curd.DamengInsert<T>;
|
var insert = that as FreeSql.Dameng.Curd.DamengInsert<T>;
|
||||||
if (insert == null) throw new Exception("ExecuteDmBulkCopy 是 FreeSql.Provider.Dameng 特有的功能");
|
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteDmBulkCopy", "Dameng"));
|
||||||
|
|
||||||
var dt = that.ToDataTable();
|
var dt = that.ToDataTable();
|
||||||
if (dt.Rows.Count == 0) return;
|
if (dt.Rows.Count == 0) return;
|
||||||
@ -95,7 +95,7 @@ public static partial class FreeSqlDamengGlobalExtensions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new NotImplementedException("ExecuteDmBulkCopy 未实现错误,请反馈给作者");
|
throw new NotImplementedException($"ExecuteDmBulkCopy {CoreStrings.S_Not_Implemented_FeedBack}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -25,12 +25,12 @@ namespace FreeSql.Firebird
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new FirebirdConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new FirebirdConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new FirebirdConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new FirebirdConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace FreeSql.Firebird
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal FirebirdConnectionPool _pool;
|
internal FirebirdConnectionPool _pool;
|
||||||
public string Name { get; set; } = "Firebird FbConnection 对象池";
|
public string Name { get; set; } = $"Firebird FbConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -121,8 +121,8 @@ namespace FreeSql.Firebird
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -151,8 +151,8 @@ namespace FreeSql.Firebird
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -89,8 +89,8 @@ namespace FreeSql.Firebird
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = tb.DbName;
|
var tbname = tb.DbName;
|
||||||
var tboldname = tb.DbOldName; //旧表名
|
var tboldname = tb.DbOldName; //旧表名
|
||||||
if (string.IsNullOrEmpty(obj.tableName) == false)
|
if (string.IsNullOrEmpty(obj.tableName) == false)
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.GBase.Curd
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Provider.GBase 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Provider.GBase {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.GBase 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.GBase {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ namespace FreeSql.GBase.Curd
|
|||||||
if (_source?.Count <= 1) return base.ToSqlValuesOrSelectUnionAll();
|
if (_source?.Count <= 1) return base.ToSqlValuesOrSelectUnionAll();
|
||||||
var sql = base.ToSqlValuesOrSelectUnionAllExtension102(false, null, (rowd, idx, sb) => sb.Append(" FROM dual"));
|
var sql = base.ToSqlValuesOrSelectUnionAllExtension102(false, null, (rowd, idx, sb) => sb.Append(" FROM dual"));
|
||||||
var validx = sql.IndexOf(") SELECT ");
|
var validx = sql.IndexOf(") SELECT ");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 SELECT");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("SELECT"));
|
||||||
return new StringBuilder()
|
return new StringBuilder()
|
||||||
.Insert(0, sql.Substring(0, validx + 1))
|
.Insert(0, sql.Substring(0, validx + 1))
|
||||||
.Append("\r\nSELECT * FROM (\r\n")
|
.Append("\r\nSELECT * FROM (\r\n")
|
||||||
|
@ -22,7 +22,7 @@ namespace FreeSql.GBase.Curd
|
|||||||
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
|
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.Provider.GBase 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Provider.GBase {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
@ -66,7 +66,7 @@ namespace FreeSql.GBase.Curd
|
|||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
|
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.GBase 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.GBase {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,12 +25,12 @@ namespace FreeSql.GBase
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new GBaseConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new GBaseConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new GBaseConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new GBaseConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace FreeSql.GBase
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal GBaseConnectionPool _pool;
|
internal GBaseConnectionPool _pool;
|
||||||
public string Name { get; set; } = "GBase IfxConnection 对象池";
|
public string Name { get; set; } = $"GBase IfxConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -120,8 +120,8 @@ namespace FreeSql.GBase
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -150,8 +150,8 @@ namespace FreeSql.GBase
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -92,8 +92,8 @@ namespace FreeSql.GBase
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ namespace FreeSql.KingbaseES
|
|||||||
public KingbaseESOnConflictDoUpdate(IInsert<T1> insert, Expression<Func<T1, object>> columns = null)
|
public KingbaseESOnConflictDoUpdate(IInsert<T1> insert, Expression<Func<T1, object>> columns = null)
|
||||||
{
|
{
|
||||||
_insert = insert as KingbaseESInsert<T1>;
|
_insert = insert as KingbaseESInsert<T1>;
|
||||||
if (_insert == null) throw new Exception("OnConflictDoUpdate 是 FreeSql.Provider.KingbaseES 特有的功能");
|
if (_insert == null) throw new Exception(CoreStrings.S_Features_Unique("OnConflictDoUpdate", "KingbaseES"));
|
||||||
if (_insert._noneParameterFlag == "c") _insert._noneParameterFlag = "cu";
|
if (_insert._noneParameterFlag == "c") _insert._noneParameterFlag = "cu";
|
||||||
|
|
||||||
if (columns != null)
|
if (columns != null)
|
||||||
@ -38,7 +38,7 @@ namespace FreeSql.KingbaseES
|
|||||||
}
|
}
|
||||||
if (_columns == null || _columns.Any() == false)
|
if (_columns == null || _columns.Any() == false)
|
||||||
_columns = _insert.InternalTable.Primarys;
|
_columns = _insert.InternalTable.Primarys;
|
||||||
if (_columns.Any() == false) throw new Exception("OnConflictDoUpdate 功能要求实体类必须设置 IsPrimary 属性");
|
if (_columns.Any() == false) throw new Exception(CoreStrings.S_OnConflictDoUpdate_MustIsPrimary);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ClearData()
|
protected void ClearData()
|
||||||
|
@ -23,12 +23,12 @@ namespace FreeSql.KingbaseES
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new KingbaseESConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new KingbaseESConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new KingbaseESConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new KingbaseESConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ namespace FreeSql.KingbaseES
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal KingbaseESConnectionPool _pool;
|
internal KingbaseESConnectionPool _pool;
|
||||||
public string Name { get; set; } = "KingbaseES KdbndpConnection 对象池";
|
public string Name { get; set; } = $"KingbaseES KdbndpConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -131,8 +131,8 @@ namespace FreeSql.KingbaseES
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -161,8 +161,8 @@ namespace FreeSql.KingbaseES
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -79,8 +79,8 @@ namespace FreeSql.KingbaseES
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { "PUBLIC", tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { "PUBLIC", tbname[0] };
|
||||||
|
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Provider.MsAccess 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Provider.MsAccess {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.MsAccess 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.MsAccess {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(1, 1000);
|
public override List<T1> ExecuteInserted() => base.SplitExecuteInserted(1, 1000);
|
||||||
|
|
||||||
public override IInsert<T1> BatchOptions(int valuesLimit, int parameterLimit, bool autoTransaction = true) =>
|
public override IInsert<T1> BatchOptions(int valuesLimit, int parameterLimit, bool autoTransaction = true) =>
|
||||||
throw new NotImplementedException("蛋疼的 access 插入只能一条一条执行,不支持 values(..),(..) 也不支持 select .. UNION ALL select ..");
|
throw new NotImplementedException(CoreStrings.S_Access_InsertOnlyOneAtTime);
|
||||||
|
|
||||||
protected override int RawExecuteAffrows()
|
protected override int RawExecuteAffrows()
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
if (_limit > 0) sb.Append("TOP ").Append(_skip + _limit).Append(" ");
|
if (_limit > 0) sb.Append("TOP ").Append(_skip + _limit).Append(" ");
|
||||||
sb.Append(field);
|
sb.Append(field);
|
||||||
if (_skip > 0)
|
if (_skip > 0)
|
||||||
throw new NotImplementedException("FreeSql.Provider.MsAccess 未实现 Skip/Offset 功能,如果需要分页请使用判断上一次 id");
|
throw new NotImplementedException(CoreStrings.S_NotImplementSkipOffset("MsAccess"));
|
||||||
sb.Append(" \r\nFROM ");
|
sb.Append(" \r\nFROM ");
|
||||||
var fromIndex = sb.Length;
|
var fromIndex = sb.Length;
|
||||||
var ioinCounter = 0;
|
var ioinCounter = 0;
|
||||||
|
@ -25,9 +25,9 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(1, 1000);
|
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(1, 1000);
|
||||||
|
|
||||||
public override IUpdate<T1> BatchOptions(int rowsLimit, int parameterLimit, bool autoTransaction = true) =>
|
public override IUpdate<T1> BatchOptions(int rowsLimit, int parameterLimit, bool autoTransaction = true) =>
|
||||||
throw new NotImplementedException("蛋疼的 access 插入只能一条一条执行,不支持 values(..),(..) 也不支持 select .. UNION ALL select ..");
|
throw new NotImplementedException(CoreStrings.S_Access_InsertOnlyOneAtTime);
|
||||||
|
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.Provider.MsAccess 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Provider.MsAccess {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
@ -69,7 +69,7 @@ namespace FreeSql.MsAccess.Curd
|
|||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(1, 1000, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(1, 1000, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(1, 1000, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(1, 1000, cancellationToken);
|
||||||
|
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.MsAccess 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.MsAccess {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,12 +23,12 @@ namespace FreeSql.MsAccess
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new MsAccessConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new MsAccessConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new MsAccessConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new MsAccessConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace FreeSql.MsAccess
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal MsAccessConnectionPool _pool;
|
internal MsAccessConnectionPool _pool;
|
||||||
public string Name { get; set; } = "Microsoft Access OleDbConnection 对象池";
|
public string Name { get; set; } = $"Microsoft Access OleDbConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(30);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(30);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.Zero;
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.Zero;
|
||||||
@ -120,8 +120,8 @@ namespace FreeSql.MsAccess
|
|||||||
|
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -151,8 +151,8 @@ namespace FreeSql.MsAccess
|
|||||||
|
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -80,8 +80,8 @@ namespace FreeSql.MsAccess
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = tb.DbName;
|
var tbname = tb.DbName;
|
||||||
var tboldname = tb.DbOldName; //旧表名
|
var tboldname = tb.DbOldName; //旧表名
|
||||||
if (string.Compare(tbname, tboldname, true) == 0) tboldname = null;
|
if (string.Compare(tbname, tboldname, true) == 0) tboldname = null;
|
||||||
@ -177,7 +177,7 @@ namespace FreeSql.MsAccess
|
|||||||
istmpatler = true;
|
istmpatler = true;
|
||||||
}
|
}
|
||||||
if (tboldname != null && isexistsTb == true)
|
if (tboldname != null && isexistsTb == true)
|
||||||
throw new Exception($"旧表(OldName):{tboldname} 存在,数据库已存在 {tbname} 表,无法改名");
|
throw new Exception(CoreStrings.S_OldTableExists(tboldname, tbname));
|
||||||
|
|
||||||
DataTable schemaColumns = null;
|
DataTable schemaColumns = null;
|
||||||
DataTable schemaDataTypes = null;
|
DataTable schemaDataTypes = null;
|
||||||
@ -394,7 +394,8 @@ namespace FreeSql.MsAccess
|
|||||||
}
|
}
|
||||||
|
|
||||||
Dictionary<string, bool> dicDropTable = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
Dictionary<string, bool> dicDropTable = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
||||||
Action<string> dropTable = tn => {
|
Action<string> dropTable = tn =>
|
||||||
|
{
|
||||||
if (dicDropTable.ContainsKey(tn)) return;
|
if (dicDropTable.ContainsKey(tn)) return;
|
||||||
dicDropTable.Add(tn, true);
|
dicDropTable.Add(tn, true);
|
||||||
sb.Append("DROP TABLE ").Append(_commonUtils.QuoteSqlName(tn)).Append(";\r\n");
|
sb.Append("DROP TABLE ").Append(_commonUtils.QuoteSqlName(tn)).Append(";\r\n");
|
||||||
|
@ -15,7 +15,7 @@ namespace FreeSql.MsAccess
|
|||||||
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere) => new MsAccessDelete<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere) => new MsAccessDelete<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
||||||
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>() => throw new NotImplementedException();
|
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>() => throw new NotImplementedException();
|
||||||
|
|
||||||
public override IDbFirst DbFirst => throw new NotImplementedException("FreeSql.Provider.MsAccess 未实现该功能");
|
public override IDbFirst DbFirst => throw new NotImplementedException($"FreeSql.Provider.MsAccess {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
public MsAccessProvider(string masterConnectionString, string[] slaveConnectionString, Func<DbConnection> connectionFactory = null)
|
public MsAccessProvider(string masterConnectionString, string[] slaveConnectionString, Func<DbConnection> connectionFactory = null)
|
||||||
{
|
{
|
||||||
this.InternalCommonUtils = new MsAccessUtils(this);
|
this.InternalCommonUtils = new MsAccessUtils(this);
|
||||||
|
@ -54,7 +54,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_table.Primarys.Any() == false) throw new Exception($"fsql.InsertOrUpdate + IfExistsDoNothing + MySql 要求实体类 {_table.CsName} 必须有主键");
|
if (_table.Primarys.Any() == false) throw new Exception(CoreStrings.Entity_Must_Primary_Key("fsql.InsertOrUpdate + IfExistsDoNothing + MySql ", _table.CsName));
|
||||||
sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) =>
|
sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) =>
|
||||||
sb.Append(" \r\n FROM dual WHERE NOT EXISTS(").Append(
|
sb.Append(" \r\n FROM dual WHERE NOT EXISTS(").Append(
|
||||||
_orm.Select<T1>()
|
_orm.Select<T1>()
|
||||||
|
@ -17,7 +17,7 @@ namespace FreeSql.MySql.Curd
|
|||||||
public OnDuplicateKeyUpdate(IInsert<T1> insert)
|
public OnDuplicateKeyUpdate(IInsert<T1> insert)
|
||||||
{
|
{
|
||||||
_mysqlInsert = insert as MySqlInsert<T1>;
|
_mysqlInsert = insert as MySqlInsert<T1>;
|
||||||
if (_mysqlInsert == null) throw new Exception("OnDuplicateKeyUpdate 是 FreeSql.Provider.MySql/FreeSql.Provider.MySqlConnector 特有的功能");
|
if (_mysqlInsert == null) throw new Exception(CoreStrings.S_Features_Unique("OnDuplicateKeyUpdate", "MySql/FreeSql.Provider.MySqlConnector"));
|
||||||
if (_mysqlInsert._noneParameterFlag == "c") _mysqlInsert._noneParameterFlag = "cu";
|
if (_mysqlInsert._noneParameterFlag == "c") _mysqlInsert._noneParameterFlag = "cu";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,12 +27,12 @@ namespace FreeSql.MySql
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new MySqlConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new MySqlConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new MySqlConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new MySqlConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ namespace FreeSql.MySql
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal MySqlConnectionPool _pool;
|
internal MySqlConnectionPool _pool;
|
||||||
public string Name { get; set; } = "MySql MySqlConnection 对象池";
|
public string Name { get; set; } = $"MySql MySqlConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -125,8 +125,8 @@ namespace FreeSql.MySql
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -155,8 +155,8 @@ namespace FreeSql.MySql
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -3,6 +3,7 @@ using System.Collections;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using FreeSql;
|
||||||
|
|
||||||
public struct MygisCoordinate2D : IEquatable<MygisCoordinate2D>
|
public struct MygisCoordinate2D : IEquatable<MygisCoordinate2D>
|
||||||
{
|
{
|
||||||
@ -71,7 +72,7 @@ public abstract class MygisGeometry
|
|||||||
else if (wkt.StartsWith("multipoint", StringComparison.CurrentCultureIgnoreCase)) return new MygisMultiPoint(ParseLineString(wkt.Substring(10).Trim('(', ')')));
|
else if (wkt.StartsWith("multipoint", StringComparison.CurrentCultureIgnoreCase)) return new MygisMultiPoint(ParseLineString(wkt.Substring(10).Trim('(', ')')));
|
||||||
else if (wkt.StartsWith("multilinestring", StringComparison.CurrentCultureIgnoreCase)) return new MygisMultiLineString(ParseMultiLineString(wkt.Substring(15).Trim('(', ')')));
|
else if (wkt.StartsWith("multilinestring", StringComparison.CurrentCultureIgnoreCase)) return new MygisMultiLineString(ParseMultiLineString(wkt.Substring(15).Trim('(', ')')));
|
||||||
else if (wkt.StartsWith("multipolygon", StringComparison.CurrentCultureIgnoreCase)) return new MygisMultiPolygon(ParseMultiPolygon(wkt.Substring(12).Trim('(', ')')));
|
else if (wkt.StartsWith("multipolygon", StringComparison.CurrentCultureIgnoreCase)) return new MygisMultiPolygon(ParseMultiPolygon(wkt.Substring(12).Trim('(', ')')));
|
||||||
throw new NotImplementedException($"MygisGeometry.Parse 未实现 \"{wkt}\"");
|
throw new NotImplementedException(CoreStrings.S_MygisGeometry_NotImplement(wkt));
|
||||||
}
|
}
|
||||||
static MygisPoint ParsePoint(string str)
|
static MygisPoint ParsePoint(string str)
|
||||||
{
|
{
|
||||||
|
@ -101,8 +101,8 @@ namespace FreeSql.MySql
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public static partial class FreeSqlMySqlGlobalExtensions
|
|||||||
public static IInsert<T1> MySqlIgnoreInto<T1>(this IInsert<T1> that) where T1 : class
|
public static IInsert<T1> MySqlIgnoreInto<T1>(this IInsert<T1> that) where T1 : class
|
||||||
{
|
{
|
||||||
var _mysqlInsert = that as MySqlInsert<T1>;
|
var _mysqlInsert = that as MySqlInsert<T1>;
|
||||||
if (_mysqlInsert == null) throw new Exception("MySqlIgnoreInto 是 FreeSql.Provider.MySql/FreeSql.Provider.MySqlConnector 特有的功能");
|
if (_mysqlInsert == null) throw new Exception(CoreStrings.S_Features_Unique("MySqlIgnoreInto", "MySql/FreeSql.Provider.MySqlConnector"));
|
||||||
_mysqlInsert.InternalIsIgnoreInto = true;
|
_mysqlInsert.InternalIsIgnoreInto = true;
|
||||||
return that;
|
return that;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public static class FreeSqlMySqlConnectorGlobalExtensions
|
|||||||
public static void ExecuteMySqlBulkCopy<T>(this IInsert<T> that, int? bulkCopyTimeout = null) where T : class
|
public static void ExecuteMySqlBulkCopy<T>(this IInsert<T> that, int? bulkCopyTimeout = null) where T : class
|
||||||
{
|
{
|
||||||
var insert = that as FreeSql.MySql.Curd.MySqlInsert<T>;
|
var insert = that as FreeSql.MySql.Curd.MySqlInsert<T>;
|
||||||
if (insert == null) throw new Exception("ExecuteMySqlBulkCopy 是 FreeSql.Provider.MySqlConnector 特有的功能");
|
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteMySqlBulkCopy", "MySqlConnector"));
|
||||||
|
|
||||||
var dt = that.ToDataTable();
|
var dt = that.ToDataTable();
|
||||||
if (dt.Rows.Count == 0) return;
|
if (dt.Rows.Count == 0) return;
|
||||||
@ -81,7 +81,7 @@ public static class FreeSqlMySqlConnectorGlobalExtensions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new NotImplementedException("ExecuteMySqlBulkCopy 未实现错误,请反馈给作者");
|
throw new NotImplementedException($"ExecuteMySqlBulkCopy {CoreStrings.S_Not_Implemented_FeedBack}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -94,7 +94,7 @@ public static class FreeSqlMySqlConnectorGlobalExtensions
|
|||||||
async public static Task ExecuteMySqlBulkCopyAsync<T>(this IInsert<T> that, int? bulkCopyTimeout = null, CancellationToken cancellationToken = default) where T : class
|
async public static Task ExecuteMySqlBulkCopyAsync<T>(this IInsert<T> that, int? bulkCopyTimeout = null, CancellationToken cancellationToken = default) where T : class
|
||||||
{
|
{
|
||||||
var insert = that as FreeSql.MySql.Curd.MySqlInsert<T>;
|
var insert = that as FreeSql.MySql.Curd.MySqlInsert<T>;
|
||||||
if (insert == null) throw new Exception("ExecuteMySqlBulkCopyAsync 是 FreeSql.Provider.MySqlConnector 特有的功能");
|
if (insert == null) throw new Exception(CoreStrings.S_Features_Unique("ExecuteMySqlBulkCopyAsync", "MySqlConnector"));
|
||||||
|
|
||||||
var dt = that.ToDataTable();
|
var dt = that.ToDataTable();
|
||||||
if (dt.Rows.Count == 0) return;
|
if (dt.Rows.Count == 0) return;
|
||||||
@ -141,7 +141,7 @@ public static class FreeSqlMySqlConnectorGlobalExtensions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new NotImplementedException("ExecuteMySqlBulkCopyAsync 未实现错误,请反馈给作者");
|
throw new NotImplementedException($"ExecuteMySqlBulkCopyAsync {CoreStrings.S_Not_Implemented_FeedBack}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Odbc.Dameng 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Odbc.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Odbc.Dameng 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Odbc.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
|
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.Odbc.Dameng 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Odbc.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
@ -66,7 +66,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
|
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Odbc.Dameng 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Odbc.Dameng {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,12 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new OdbcDamengConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new OdbcDamengConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new OdbcDamengConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new OdbcDamengConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal OdbcDamengConnectionPool _pool;
|
internal OdbcDamengConnectionPool _pool;
|
||||||
public string Name { get; set; } = "Dameng OdbcConnection 对象池";
|
public string Name { get; set; } = $"Dameng OdbcConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -131,8 +131,8 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -161,8 +161,8 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -93,8 +93,8 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] };
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
//codefirst 不支持表名中带 .
|
//codefirst 不支持表名中带 .
|
||||||
|
|
||||||
if (string.Compare(tbname[0], userId) != 0 && _orm.Ado.ExecuteScalar(CommandType.Text, _commonUtils.FormatSql(" select 1 from sys.dba_users where username={0}", tbname[0])) == null) //创建数据库
|
if (string.Compare(tbname[0], userId) != 0 && _orm.Ado.ExecuteScalar(CommandType.Text, _commonUtils.FormatSql(" select 1 from sys.dba_users where username={0}", tbname[0])) == null) //创建数据库
|
||||||
throw new NotImplementedException($"达梦 CodeFirst 不支持代码创建 tablespace 与 schemas {tbname[0]}");
|
throw new NotImplementedException(CoreStrings.S_Dameng_NotSupport_TablespaceSchemas(tbname[0]));
|
||||||
|
|
||||||
var sbalter = new StringBuilder();
|
var sbalter = new StringBuilder();
|
||||||
var istmpatler = false; //创建临时表,导入数据,删除旧表,修改
|
var istmpatler = false; //创建临时表,导入数据,删除旧表,修改
|
||||||
|
@ -160,7 +160,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
||||||
return OdbcType.NVarChar;
|
return OdbcType.NVarChar;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException(CoreStrings.S_TypeMappingNotImplemented(column.DbTypeTextFull));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ConcurrentDictionary<string, DbToCs> _dicDbToCs = new ConcurrentDictionary<string, DbToCs>(StringComparer.CurrentCultureIgnoreCase);
|
static ConcurrentDictionary<string, DbToCs> _dicDbToCs = new ConcurrentDictionary<string, DbToCs>(StringComparer.CurrentCultureIgnoreCase);
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.Odbc.Default
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override List<T1> RawExecuteInserted() => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
protected override List<T1> RawExecuteInserted() => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
@ -107,7 +107,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
protected override Task<List<T1>> RawExecuteInsertedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
protected override Task<List<T1>> RawExecuteInsertedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -35,7 +35,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
if (_limit > 0 && _utils.Adapter.SelectTopStyle == OdbcAdapter.SelecTopStyle.Top) sb.Append("TOP ").Append(_skip + _limit).Append(" ");
|
if (_limit > 0 && _utils.Adapter.SelectTopStyle == OdbcAdapter.SelecTopStyle.Top) sb.Append("TOP ").Append(_skip + _limit).Append(" ");
|
||||||
sb.Append(field);
|
sb.Append(field);
|
||||||
if (_skip > 0 && _utils.Adapter.SelectTopStyle == OdbcAdapter.SelecTopStyle.Top)
|
if (_skip > 0 && _utils.Adapter.SelectTopStyle == OdbcAdapter.SelecTopStyle.Top)
|
||||||
throw new NotImplementedException("FreeSql.Odbc.Default 未实现 Skip/Offset 功能,如果需要分页请使用判断上一次 id");
|
throw new NotImplementedException(CoreStrings.S_NotImplementSkipOffset("Default"));
|
||||||
|
|
||||||
sb.Append(" \r\nFROM ");
|
sb.Append(" \r\nFROM ");
|
||||||
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray();
|
||||||
|
@ -23,7 +23,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
||||||
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255);
|
||||||
|
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : _utils.Adapter.UpdateBatchSplitLimit, _batchParameterLimit > 0 ? _batchParameterLimit : 255, cancellationToken);
|
||||||
|
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,12 @@ namespace FreeSql.Odbc.Default
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new OdbcConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new OdbcConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new OdbcConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new OdbcConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal OdbcConnectionPool _pool;
|
internal OdbcConnectionPool _pool;
|
||||||
public string Name { get; set; } = "Default OdbcConnection 对象池";
|
public string Name { get; set; } = $"Default OdbcConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -121,8 +121,8 @@ namespace FreeSql.Odbc.Default
|
|||||||
|
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -152,8 +152,8 @@ namespace FreeSql.Odbc.Default
|
|||||||
|
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -90,6 +90,6 @@ namespace FreeSql.Odbc.Default
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string GetComparisonDDLStatements(params TypeAndName[] objects) => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
protected override string GetComparisonDDLStatements(params TypeAndName[] objects) => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,7 +20,7 @@ namespace FreeSql.Odbc.Default
|
|||||||
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere) => new OdbcDelete<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere) => new OdbcDelete<T1>(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);
|
||||||
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>() => throw new NotImplementedException();
|
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>() => throw new NotImplementedException();
|
||||||
|
|
||||||
public override IDbFirst DbFirst => throw new NotImplementedException("FreeSql.Odbc.Default 未实现该功能");
|
public override IDbFirst DbFirst => throw new NotImplementedException($"FreeSql.Odbc.Default {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 生成一个普通访问功能的 IFreeSql 对象,用来访问 odbc
|
/// 生成一个普通访问功能的 IFreeSql 对象,用来访问 odbc
|
||||||
|
@ -24,7 +24,7 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
public OdbcKingbaseESOnConflictDoUpdate(IInsert<T1> insert, Expression<Func<T1, object>> columns = null)
|
public OdbcKingbaseESOnConflictDoUpdate(IInsert<T1> insert, Expression<Func<T1, object>> columns = null)
|
||||||
{
|
{
|
||||||
_pgsqlInsert = insert as OdbcKingbaseESInsert<T1>;
|
_pgsqlInsert = insert as OdbcKingbaseESInsert<T1>;
|
||||||
if (_pgsqlInsert == null) throw new Exception("OnConflictDoUpdate 是 FreeSql.Provider.Odbc/KingbaseES 特有的功能");
|
if (_pgsqlInsert == null) throw new Exception(CoreStrings.S_Features_Unique("OnConflictDoUpdate", "Odbc/KingbaseES"));
|
||||||
if (_pgsqlInsert._noneParameterFlag == "c") _pgsqlInsert._noneParameterFlag = "cu";
|
if (_pgsqlInsert._noneParameterFlag == "c") _pgsqlInsert._noneParameterFlag = "cu";
|
||||||
|
|
||||||
if (columns != null)
|
if (columns != null)
|
||||||
@ -38,7 +38,7 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
}
|
}
|
||||||
if (_columns == null || _columns.Any() == false)
|
if (_columns == null || _columns.Any() == false)
|
||||||
_columns = _pgsqlInsert.InternalTable.Primarys;
|
_columns = _pgsqlInsert.InternalTable.Primarys;
|
||||||
if (_columns.Any() == false) throw new Exception("OnConflictDoUpdate 功能要求实体类必须设置 IsPrimary 属性");
|
if (_columns.Any() == false) throw new Exception(CoreStrings.S_OnConflictDoUpdate_MustIsPrimary);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ClearData()
|
protected void ClearData()
|
||||||
|
@ -23,12 +23,12 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new OdbcKingbaseESConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new OdbcKingbaseESConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new OdbcKingbaseESConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new OdbcKingbaseESConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal OdbcKingbaseESConnectionPool _pool;
|
internal OdbcKingbaseESConnectionPool _pool;
|
||||||
public string Name { get; set; } = "KingbaseES OdbcConnection 对象池";
|
public string Name { get; set; } = $"KingbaseES OdbcConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -131,8 +131,8 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -161,8 +161,8 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -83,8 +83,8 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { "PUBLIC", tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { "PUBLIC", tbname[0] };
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_table.Primarys.Any() == false) throw new Exception($"fsql.InsertOrUpdate + IfExistsDoNothing + MySql 要求实体类 {_table.CsName} 必须有主键");
|
if (_table.Primarys.Any() == false) throw new Exception(CoreStrings.Entity_Must_Primary_Key("fsql.InsertOrUpdate + IfExistsDoNothing + MySql ", _table.CsName));
|
||||||
sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) =>
|
sql = insert.ToSqlValuesOrSelectUnionAllExtension101(false, (rowd, idx, sb) =>
|
||||||
sb.Append(" \r\n FROM dual WHERE NOT EXISTS(").Append(
|
sb.Append(" \r\n FROM dual WHERE NOT EXISTS(").Append(
|
||||||
_orm.Select<T1>()
|
_orm.Select<T1>()
|
||||||
|
@ -17,7 +17,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
public OdbcMySqlOnDuplicateKeyUpdate(IInsert<T1> insert)
|
public OdbcMySqlOnDuplicateKeyUpdate(IInsert<T1> insert)
|
||||||
{
|
{
|
||||||
_mysqlInsert = insert as OdbcMySqlInsert<T1>;
|
_mysqlInsert = insert as OdbcMySqlInsert<T1>;
|
||||||
if (_mysqlInsert == null) throw new Exception("OnDuplicateKeyUpdate 是 FreeSql.Provider.Odbc/MySql 特有的功能");
|
if (_mysqlInsert == null) throw new Exception(CoreStrings.S_Features_Unique("OnDuplicateKeyUpdate", "Odbc/MySql"));
|
||||||
if (_mysqlInsert._noneParameterFlag == "c") _mysqlInsert._noneParameterFlag = "cu";
|
if (_mysqlInsert._noneParameterFlag == "c") _mysqlInsert._noneParameterFlag = "cu";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,12 +23,12 @@ namespace FreeSql.Odbc.MySql
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new OdbcMySqlConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new OdbcMySqlConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new OdbcMySqlConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new OdbcMySqlConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal OdbcMySqlConnectionPool _pool;
|
internal OdbcMySqlConnectionPool _pool;
|
||||||
public string Name { get; set; } = "MySql OdbcConnection 对象池";
|
public string Name { get; set; } = $"MySql OdbcConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -120,8 +120,8 @@ namespace FreeSql.Odbc.MySql
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -150,8 +150,8 @@ namespace FreeSql.Odbc.MySql
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -90,8 +90,8 @@ namespace FreeSql.Odbc.MySql
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { database, tbname[0] };
|
||||||
|
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Odbc.Oracle 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Odbc.Oracle {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Odbc.Oracle 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Odbc.Oracle {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override int ExecuteAffrows() => base.SplitExecuteAffrows(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
public override List<T1> ExecuteUpdated() => base.SplitExecuteUpdated(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999);
|
||||||
|
|
||||||
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException("FreeSql.Odbc.Oracle 未实现该功能");
|
protected override List<T1> RawExecuteUpdated() => throw new NotImplementedException($"FreeSql.Odbc.Oracle {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
protected override void ToSqlCase(StringBuilder caseWhen, ColumnInfo[] primarys)
|
||||||
{
|
{
|
||||||
@ -68,7 +68,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<int> ExecuteAffrowsAsync(CancellationToken cancellationToken = default) => base.SplitExecuteAffrowsAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
public override Task<List<T1>> ExecuteUpdatedAsync(CancellationToken cancellationToken = default) => base.SplitExecuteUpdatedAsync(_batchRowsLimit > 0 ? _batchRowsLimit : 200, _batchParameterLimit > 0 ? _batchParameterLimit : 999, cancellationToken);
|
||||||
|
|
||||||
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Odbc.Oracle 未实现该功能");
|
protected override Task<List<T1>> RawExecuteUpdatedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Odbc.Oracle {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,12 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new OdbcOracleConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new OdbcOracleConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new OdbcOracleConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new OdbcOracleConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal OdbcOracleConnectionPool _pool;
|
internal OdbcOracleConnectionPool _pool;
|
||||||
public string Name { get; set; } = "Oracle OdbcConnection 对象池";
|
public string Name { get; set; } = $"Oracle OdbcConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -131,8 +131,8 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -161,8 +161,8 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -93,8 +93,8 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { userId, tbname[0] };
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
//codefirst 不支持表名中带 .
|
//codefirst 不支持表名中带 .
|
||||||
|
|
||||||
if (string.Compare(tbname[0], userId) != 0 && _orm.Ado.ExecuteScalar(CommandType.Text, _commonUtils.FormatSql(" select 1 from sys.dba_users where username={0}", tbname[0])) == null) //创建数据库
|
if (string.Compare(tbname[0], userId) != 0 && _orm.Ado.ExecuteScalar(CommandType.Text, _commonUtils.FormatSql(" select 1 from sys.dba_users where username={0}", tbname[0])) == null) //创建数据库
|
||||||
throw new NotImplementedException($"Oracle CodeFirst 不支持代码创建 tablespace 与 schemas {tbname[0]}");
|
throw new NotImplementedException(CoreStrings.S_Oracle_NotSupport_TablespaceSchemas(tbname[0]));
|
||||||
|
|
||||||
var sbalter = new StringBuilder();
|
var sbalter = new StringBuilder();
|
||||||
var istmpatler = false; //创建临时表,导入数据,删除旧表,修改
|
var istmpatler = false; //创建临时表,导入数据,删除旧表,修改
|
||||||
|
@ -113,7 +113,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
if (dbfull != null) _dicDbToCs.TryAdd(dbfull, _dicDbToCs["nvarchar2(255)"]);
|
||||||
return OdbcType.NVarChar;
|
return OdbcType.NVarChar;
|
||||||
}
|
}
|
||||||
throw new NotImplementedException($"未实现 {column.DbTypeTextFull} 类型映射");
|
throw new NotImplementedException(CoreStrings.S_TypeMappingNotImplemented(column.DbTypeTextFull));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ConcurrentDictionary<string, DbToCs> _dicDbToCs = new ConcurrentDictionary<string, DbToCs>(StringComparer.CurrentCultureIgnoreCase);
|
static ConcurrentDictionary<string, DbToCs> _dicDbToCs = new ConcurrentDictionary<string, DbToCs>(StringComparer.CurrentCultureIgnoreCase);
|
||||||
|
@ -24,7 +24,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
public OdbcPostgreSQLOnConflictDoUpdate(IInsert<T1> insert, Expression<Func<T1, object>> columns = null)
|
public OdbcPostgreSQLOnConflictDoUpdate(IInsert<T1> insert, Expression<Func<T1, object>> columns = null)
|
||||||
{
|
{
|
||||||
_pgsqlInsert = insert as OdbcPostgreSQLInsert<T1>;
|
_pgsqlInsert = insert as OdbcPostgreSQLInsert<T1>;
|
||||||
if (_pgsqlInsert == null) throw new Exception("OnConflictDoUpdate 是 FreeSql.Provider.Odbc/PostgreSQL 特有的功能");
|
if (_pgsqlInsert == null) throw new Exception(CoreStrings.S_Features_Unique("OnConflictDoUpdate", "Odbc/PostgreSQL"));
|
||||||
if (_pgsqlInsert._noneParameterFlag == "c") _pgsqlInsert._noneParameterFlag = "cu";
|
if (_pgsqlInsert._noneParameterFlag == "c") _pgsqlInsert._noneParameterFlag = "cu";
|
||||||
|
|
||||||
if (columns != null)
|
if (columns != null)
|
||||||
@ -38,7 +38,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
}
|
}
|
||||||
if (_columns == null || _columns.Any() == false)
|
if (_columns == null || _columns.Any() == false)
|
||||||
_columns = _pgsqlInsert.InternalTable.Primarys;
|
_columns = _pgsqlInsert.InternalTable.Primarys;
|
||||||
if (_columns.Any() == false) throw new Exception("OnConflictDoUpdate 功能要求实体类必须设置 IsPrimary 属性");
|
if (_columns.Any() == false) throw new Exception(CoreStrings.S_OnConflictDoUpdate_MustIsPrimary);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ClearData()
|
protected void ClearData()
|
||||||
|
@ -23,12 +23,12 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new OdbcPostgreSQLConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new OdbcPostgreSQLConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new OdbcPostgreSQLConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new OdbcPostgreSQLConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal OdbcPostgreSQLConnectionPool _pool;
|
internal OdbcPostgreSQLConnectionPool _pool;
|
||||||
public string Name { get; set; } = "PostgreSQL OdbcConnection 对象池";
|
public string Name { get; set; } = $"PostgreSQL OdbcConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 50;
|
public int PoolSize { get; set; } = 50;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -121,8 +121,8 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -151,8 +151,8 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
{
|
{
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -96,8 +96,8 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { "public", tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { "public", tbname[0] };
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
}
|
}
|
||||||
var sql = sb.ToString();
|
var sql = sb.ToString();
|
||||||
var validx = sql.IndexOf(" WHERE ");
|
var validx = sql.IndexOf(" WHERE ");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("WHERE"));
|
||||||
sql = sb.Clear().Append(sql.Substring(0, validx))
|
sql = sb.Clear().Append(sql.Substring(0, validx))
|
||||||
.Append(sbret)
|
.Append(sbret)
|
||||||
.Append(sql.Substring(validx)).ToString();
|
.Append(sql.Substring(validx)).ToString();
|
||||||
@ -97,7 +97,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
}
|
}
|
||||||
var sql = sb.ToString();
|
var sql = sb.ToString();
|
||||||
var validx = sql.IndexOf(" WHERE ");
|
var validx = sql.IndexOf(" WHERE ");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("WHERE"));
|
||||||
sql = sb.Clear().Append(sql.Substring(0, validx))
|
sql = sb.Clear().Append(sql.Substring(0, validx))
|
||||||
.Append(sbret)
|
.Append(sbret)
|
||||||
.Append(sql.Substring(validx)).ToString();
|
.Append(sql.Substring(validx)).ToString();
|
||||||
|
@ -69,14 +69,14 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
if ((_commonUtils as OdbcSqlServerUtils).ServerVersion > 10)
|
if ((_commonUtils as OdbcSqlServerUtils).ServerVersion > 10)
|
||||||
{
|
{
|
||||||
var validx = sql.IndexOf(") VALUES");
|
var validx = sql.IndexOf(") VALUES");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("VALUES"));
|
||||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||||
sb.Append(sql.Substring(validx + 1));
|
sb.Append(sql.Substring(validx + 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var validx = sql.IndexOf(") SELECT ");
|
var validx = sql.IndexOf(") SELECT ");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 SELECT");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("SELECT"));
|
||||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||||
sb.Append(sql.Substring(validx + 1));
|
sb.Append(sql.Substring(validx + 1));
|
||||||
}
|
}
|
||||||
@ -153,14 +153,14 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
if ((_commonUtils as OdbcSqlServerUtils).ServerVersion > 10)
|
if ((_commonUtils as OdbcSqlServerUtils).ServerVersion > 10)
|
||||||
{
|
{
|
||||||
var validx = sql.IndexOf(") VALUES");
|
var validx = sql.IndexOf(") VALUES");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 VALUES");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("VALUES"));
|
||||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||||
sb.Append(sql.Substring(validx + 1));
|
sb.Append(sql.Substring(validx + 1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var validx = sql.IndexOf(") SELECT ");
|
var validx = sql.IndexOf(") SELECT ");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 SELECT");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("SELECT"));
|
||||||
sb.Insert(0, sql.Substring(0, validx + 1));
|
sb.Insert(0, sql.Substring(0, validx + 1));
|
||||||
sb.Append(sql.Substring(validx + 1));
|
sb.Append(sql.Substring(validx + 1));
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
}
|
}
|
||||||
var sql = sb.ToString();
|
var sql = sb.ToString();
|
||||||
var validx = sql.IndexOf(" \r\nWHERE ");
|
var validx = sql.IndexOf(" \r\nWHERE ");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("WHERE"));
|
||||||
sql = sb.Clear().Append(sql.Substring(0, validx))
|
sql = sb.Clear().Append(sql.Substring(0, validx))
|
||||||
.Append(sbret)
|
.Append(sbret)
|
||||||
.Append(sql.Substring(validx)).ToString();
|
.Append(sql.Substring(validx)).ToString();
|
||||||
@ -139,7 +139,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
}
|
}
|
||||||
var sql = sb.ToString();
|
var sql = sb.ToString();
|
||||||
var validx = sql.IndexOf(" \r\nWHERE ");
|
var validx = sql.IndexOf(" \r\nWHERE ");
|
||||||
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
|
if (validx == -1) throw new ArgumentException(CoreStrings.S_NotFound_Name("WHERE"));
|
||||||
sql = sb.Clear().Append(sql.Substring(0, validx))
|
sql = sb.Clear().Append(sql.Substring(0, validx))
|
||||||
.Append(sbret)
|
.Append(sbret)
|
||||||
.Append(sql.Substring(validx)).ToString();
|
.Append(sql.Substring(validx)).ToString();
|
||||||
|
@ -23,12 +23,12 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(masterConnectionString))
|
if (!string.IsNullOrEmpty(masterConnectionString))
|
||||||
MasterPool = new OdbcSqlServerConnectionPool("主库", masterConnectionString, null, null);
|
MasterPool = new OdbcSqlServerConnectionPool(CoreStrings.S_MasterDatabase, masterConnectionString, null, null);
|
||||||
if (slaveConnectionStrings != null)
|
if (slaveConnectionStrings != null)
|
||||||
{
|
{
|
||||||
foreach (var slaveConnectionString in slaveConnectionStrings)
|
foreach (var slaveConnectionString in slaveConnectionStrings)
|
||||||
{
|
{
|
||||||
var slavePool = new OdbcSqlServerConnectionPool($"从库{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
var slavePool = new OdbcSqlServerConnectionPool($"{CoreStrings.S_SlaveDatabase}{SlavePools.Count + 1}", slaveConnectionString, () => Interlocked.Decrement(ref slaveUnavailables), () => Interlocked.Increment(ref slaveUnavailables));
|
||||||
SlavePools.Add(slavePool);
|
SlavePools.Add(slavePool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
{
|
{
|
||||||
|
|
||||||
internal OdbcSqlServerConnectionPool _pool;
|
internal OdbcSqlServerConnectionPool _pool;
|
||||||
public string Name { get; set; } = "SqlServer OdbcConnection 对象池";
|
public string Name { get; set; } = $"SqlServer OdbcConnection {CoreStrings.S_ObjectPool}";
|
||||||
public int PoolSize { get; set; } = 100;
|
public int PoolSize { get; set; } = 100;
|
||||||
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
public TimeSpan SyncGetTimeout { get; set; } = TimeSpan.FromSeconds(10);
|
||||||
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromSeconds(20);
|
||||||
@ -121,8 +121,8 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && obj.Value.Ping() == false)
|
||||||
@ -152,8 +152,8 @@ namespace FreeSql.Odbc.SqlServer
|
|||||||
|
|
||||||
if (obj.Value == null)
|
if (obj.Value == null)
|
||||||
{
|
{
|
||||||
_pool.SetUnavailable(new Exception("连接字符串错误"), obj.LastGetTimeCopy);
|
_pool.SetUnavailable(new Exception(CoreStrings.S_ConnectionStringError), obj.LastGetTimeCopy);
|
||||||
throw new Exception($"【{this.Name}】连接字符串错误,请检查。");
|
throw new Exception(CoreStrings.S_ConnectionStringError_Check(this.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
if (obj.Value.State != ConnectionState.Open || DateTime.Now.Subtract(obj.LastReturnTime).TotalSeconds > 60 && (await obj.Value.PingAsync()) == false)
|
||||||
|
@ -150,8 +150,8 @@ ELSE
|
|||||||
{
|
{
|
||||||
if (sb.Length > 0) sb.Append("\r\n");
|
if (sb.Length > 0) sb.Append("\r\n");
|
||||||
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
var tb = _commonUtils.GetTableByEntity(obj.entityType);
|
||||||
if (tb == null) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移");
|
if (tb == null) throw new Exception(CoreStrings.S_Type_IsNot_Migrable(obj.entityType.FullName));
|
||||||
if (tb.Columns.Any() == false) throw new Exception($"类型 {obj.entityType.FullName} 不可迁移,可迁移属性0个");
|
if (tb.Columns.Any() == false) throw new Exception(CoreStrings.S_Type_IsNot_Migrable_0Attributes(obj.entityType.FullName));
|
||||||
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
var tbname = _commonUtils.SplitTableName(tb.DbName);
|
||||||
if (tbname?.Length == 1) tbname = new[] { database, "dbo", tbname[0] };
|
if (tbname?.Length == 1) tbname = new[] { database, "dbo", tbname[0] };
|
||||||
if (tbname?.Length == 2) tbname = new[] { database, tbname[0], tbname[1] };
|
if (tbname?.Length == 2) tbname = new[] { database, tbname[0], tbname[1] };
|
||||||
|
@ -16,11 +16,11 @@ namespace FreeSql.Oracle.Curd
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override List<T1> ExecuteDeleted() => throw new NotImplementedException("FreeSql.Provider.Oracle 未实现该功能");
|
public override List<T1> ExecuteDeleted() => throw new NotImplementedException($"FreeSql.Provider.Oracle {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
|
|
||||||
#if net40
|
#if net40
|
||||||
#else
|
#else
|
||||||
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException("FreeSql.Provider.Oracle 未实现该功能");
|
public override Task<List<T1>> ExecuteDeletedAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException($"FreeSql.Provider.Oracle {CoreStrings.S_Not_Implemented_Feature}");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user