mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 20:38:16 +08:00
#694 ✨ Exception信息 国际化 多语言
This commit is contained in:
977
FreeSql/Properties/CoreStrings.Designer.cs
generated
Normal file
977
FreeSql/Properties/CoreStrings.Designer.cs
generated
Normal file
@ -0,0 +1,977 @@
|
||||
|
||||
// <auto-generated />
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Threading;
|
||||
|
||||
namespace FreeSql
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// String resources used in FreeSql exceptions, etc.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// These strings are exposed publicly for use by database providers and extensions.
|
||||
/// It is unusual for application code to need these strings.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public static class CoreStrings
|
||||
{
|
||||
private static readonly ResourceManager _resourceManager
|
||||
= new ResourceManager("FreeSql.Properties.CoreStrings", typeof(CoreStrings).Assembly);
|
||||
|
||||
/// <summary>
|
||||
/// [Table(AsTable = "{asTable}")] 特性值格式错误
|
||||
/// </summary>
|
||||
public static string AsTable_PropertyName_FormatError(object asTable)
|
||||
=> string.Format(
|
||||
GetString("AsTable_PropertyName_FormatError", nameof(asTable)),
|
||||
asTable);
|
||||
|
||||
/// <summary>
|
||||
/// [Table(AsTable = xx)] 设置的属性名 {atmGroupsValue} 不是 DateTime 类型
|
||||
/// </summary>
|
||||
public static string AsTable_PropertyName_NotDateTime(object atmGroupsValue)
|
||||
=> string.Format(
|
||||
GetString("AsTable_PropertyName_NotDateTime", nameof(atmGroupsValue)),
|
||||
atmGroupsValue);
|
||||
|
||||
/// <summary>
|
||||
/// {name}: Failed to get resource {statistics}
|
||||
/// </summary>
|
||||
public static string Available_Failed_Get_Resource(object name, object statistics)
|
||||
=> string.Format(
|
||||
GetString("Available_Failed_Get_Resource", nameof(name), nameof(statistics)),
|
||||
name, statistics);
|
||||
|
||||
/// <summary>
|
||||
/// {name}: An exception needs to be thrown
|
||||
/// </summary>
|
||||
public static string Available_Thrown_Exception(object name)
|
||||
=> string.Format(
|
||||
GetString("Available_Thrown_Exception", nameof(name)),
|
||||
name);
|
||||
|
||||
/// <summary>
|
||||
/// 错误的表达式格式 {column}
|
||||
/// </summary>
|
||||
public static string Bad_Expression_Format(object column)
|
||||
=> string.Format(
|
||||
GetString("Bad_Expression_Format", nameof(column)),
|
||||
column);
|
||||
|
||||
/// <summary>
|
||||
/// Chunk 功能之前不可使用 Select
|
||||
/// </summary>
|
||||
public static string Before_Chunk_Cannot_Use_Select
|
||||
=> GetString("Before_Chunk_Cannot_Use_Select");
|
||||
|
||||
/// <summary>
|
||||
/// 安全起见,请务必在事务开启之后,再使用 ForUpdate
|
||||
/// </summary>
|
||||
public static string Begin_Transaction_Then_ForUpdate
|
||||
=> GetString("Begin_Transaction_Then_ForUpdate");
|
||||
|
||||
/// <summary>
|
||||
/// 不能为 null
|
||||
/// </summary>
|
||||
public static string Cannot_Be_NULL
|
||||
=> GetString("Cannot_Be_NULL");
|
||||
|
||||
/// <summary>
|
||||
/// {name} 不能为 null
|
||||
/// </summary>
|
||||
public static string Cannot_Be_NULL_Name(object name)
|
||||
=> string.Format(
|
||||
GetString("Cannot_Be_NULL_Name", nameof(name)),
|
||||
name);
|
||||
|
||||
/// <summary>
|
||||
/// 无法匹配 {property}
|
||||
/// </summary>
|
||||
public static string Cannot_Match_Property(object property)
|
||||
=> string.Format(
|
||||
GetString("Cannot_Match_Property", nameof(property)),
|
||||
property);
|
||||
|
||||
/// <summary>
|
||||
/// {property} 无法解析为表达式树
|
||||
/// </summary>
|
||||
public static string Cannot_Resolve_ExpressionTree(object property)
|
||||
=> string.Format(
|
||||
GetString("Cannot_Resolve_ExpressionTree", nameof(property)),
|
||||
property);
|
||||
|
||||
/// <summary>
|
||||
/// 参数 masterConnectionString 不可为空,请检查 UseConnectionString
|
||||
/// </summary>
|
||||
public static string Check_UseConnectionString
|
||||
=> GetString("Check_UseConnectionString");
|
||||
|
||||
/// <summary>
|
||||
/// 提交
|
||||
/// </summary>
|
||||
public static string Commit
|
||||
=> GetString("Commit");
|
||||
|
||||
/// <summary>
|
||||
/// 连接失败,准备切换其他可用服务器
|
||||
/// </summary>
|
||||
public static string Connection_Failed_Switch_Servers
|
||||
=> GetString("Connection_Failed_Switch_Servers");
|
||||
|
||||
/// <summary>
|
||||
/// 自定义表达式解析错误:类型 {exp3MethodDeclaringType} 需要定义 static ThreadLocal<ExpressionCallContext> 字段、字段、字段(重要三次提醒)
|
||||
/// </summary>
|
||||
public static string Custom_Expression_ParsingError(object exp3MethodDeclaringType)
|
||||
=> string.Format(
|
||||
GetString("Custom_Expression_ParsingError", nameof(exp3MethodDeclaringType)),
|
||||
exp3MethodDeclaringType);
|
||||
|
||||
/// <summary>
|
||||
/// Custom { 反射信息 }不能为空,格式:{ 静态方法名 }{ 空格 }{ 反射信息 }
|
||||
/// </summary>
|
||||
public static string Custom_Reflection_IsNotNull
|
||||
=> GetString("Custom_Reflection_IsNotNull");
|
||||
|
||||
/// <summary>
|
||||
/// Custom { 静态方法名 }不能为空,格式:{ 静态方法名 }{ 空格 }{ 反射信息 }
|
||||
/// </summary>
|
||||
public static string Custom_StaticMethodName_IsNotNull
|
||||
=> GetString("Custom_StaticMethodName_IsNotNull");
|
||||
|
||||
/// <summary>
|
||||
/// Custom 对应的{{ 静态方法名 }}:{fiValueCustomArray} 未设置 [DynamicFilterCustomAttribute] 特性
|
||||
/// </summary>
|
||||
public static string Custom_StaticMethodName_NotSet_DynamicFilterCustom(object fiValueCustomArray)
|
||||
=> string.Format(
|
||||
GetString("Custom_StaticMethodName_NotSet_DynamicFilterCustom", nameof(fiValueCustomArray)),
|
||||
fiValueCustomArray);
|
||||
|
||||
/// <summary>
|
||||
/// Custom 要求 Field 应该空格分割,并且长度为 2,格式:{ 静态方法名 }{ 空格 }{ 反射信息 }
|
||||
/// </summary>
|
||||
public static string CustomFieldSeparatedBySpaces
|
||||
=> GetString("CustomFieldSeparatedBySpaces");
|
||||
|
||||
/// <summary>
|
||||
/// 操作的数据类型({dataDisplayCsharp}) 与 AsType({tableTypeDisplayCsharp}) 不一致,请检查。
|
||||
/// </summary>
|
||||
public static string DataType_AsType_Inconsistent(object dataDisplayCsharp, object tableTypeDisplayCsharp)
|
||||
=> string.Format(
|
||||
GetString("DataType_AsType_Inconsistent", nameof(dataDisplayCsharp), nameof(tableTypeDisplayCsharp)),
|
||||
dataDisplayCsharp, tableTypeDisplayCsharp);
|
||||
|
||||
/// <summary>
|
||||
/// DateRange 要求 Value 应该逗号分割,并且长度为 2
|
||||
/// </summary>
|
||||
public static string DateRange_Comma_Separateda_By2Char
|
||||
=> GetString("DateRange_Comma_Separateda_By2Char");
|
||||
|
||||
/// <summary>
|
||||
/// DateRange 要求 Value[1] 格式必须为:yyyy、yyyy-MM、yyyy-MM-dd、yyyy-MM-dd HH、yyyy、yyyy-MM-dd HH:mm
|
||||
/// </summary>
|
||||
public static string DateRange_DateFormat_yyyy
|
||||
=> GetString("DateRange_DateFormat_yyyy");
|
||||
|
||||
/// <summary>
|
||||
/// 记录可能不存在,或者【行级乐观锁】版本过旧,更新数量{sourceCount},影响的行数{affrows}。
|
||||
/// </summary>
|
||||
public static string DbUpdateVersionException_RowLevelOptimisticLock(object sourceCount, object affrows)
|
||||
=> string.Format(
|
||||
GetString("DbUpdateVersionException_RowLevelOptimisticLock", nameof(sourceCount), nameof(affrows)),
|
||||
sourceCount, affrows);
|
||||
|
||||
/// <summary>
|
||||
/// SlaveConnectionString 数量与 SlaveWeights 不相同
|
||||
/// </summary>
|
||||
public static string Different_Number_SlaveConnectionString_SlaveWeights
|
||||
=> GetString("Different_Number_SlaveConnectionString_SlaveWeights");
|
||||
|
||||
/// <summary>
|
||||
/// ColumnAttribute.Name {colattrName} 重复存在,请检查(注意:不区分大小写)
|
||||
/// </summary>
|
||||
public static string Duplicate_ColumnAttribute(object colattrName)
|
||||
=> string.Format(
|
||||
GetString("Duplicate_ColumnAttribute", nameof(colattrName)),
|
||||
colattrName);
|
||||
|
||||
/// <summary>
|
||||
/// 属性名 {pName} 重复存在,请检查(注意:不区分大小写)
|
||||
/// </summary>
|
||||
public static string Duplicate_PropertyName(object pName)
|
||||
=> string.Format(
|
||||
GetString("Duplicate_PropertyName", nameof(pName)),
|
||||
pName);
|
||||
|
||||
/// <summary>
|
||||
/// {function} 功能要求实体类 {tableCsName} 必须有主键
|
||||
/// </summary>
|
||||
public static string Entity_Must_Primary_Key(object function, object tableCsName)
|
||||
=> string.Format(
|
||||
GetString("Entity_Must_Primary_Key", nameof(function), nameof(tableCsName)),
|
||||
function, tableCsName);
|
||||
|
||||
/// <summary>
|
||||
/// {tbTypeFullName} 是父子关系,但是 MySql 8.0 以下版本中不支持组合多主键
|
||||
/// </summary>
|
||||
public static string Entity_MySQL_VersionsBelow8_NotSupport_Multiple_PrimaryKeys(object tbTypeFullName)
|
||||
=> string.Format(
|
||||
GetString("Entity_MySQL_VersionsBelow8_NotSupport_Multiple_PrimaryKeys", nameof(tbTypeFullName)),
|
||||
tbTypeFullName);
|
||||
|
||||
/// <summary>
|
||||
/// {tbTypeFullName} 不是父子关系,无法使用该功能
|
||||
/// </summary>
|
||||
public static string Entity_NotParentChild_Relationship(object tbTypeFullName)
|
||||
=> string.Format(
|
||||
GetString("Entity_NotParentChild_Relationship", nameof(tbTypeFullName)),
|
||||
tbTypeFullName);
|
||||
|
||||
/// <summary>
|
||||
/// 这个特别的子查询不能解析
|
||||
/// </summary>
|
||||
public static string EspeciallySubquery_Cannot_Parsing
|
||||
=> GetString("EspeciallySubquery_Cannot_Parsing");
|
||||
|
||||
/// <summary>
|
||||
/// 表达式错误,它的顶级对象不是 ParameterExpression:{exp}
|
||||
/// </summary>
|
||||
public static string Expression_Error_Use_ParameterExpression(object exp)
|
||||
=> string.Format(
|
||||
GetString("Expression_Error_Use_ParameterExpression", nameof(exp)),
|
||||
exp);
|
||||
|
||||
/// <summary>
|
||||
/// 表达式错误,它不是连续的 MemberAccess 类型:{exp}
|
||||
/// </summary>
|
||||
public static string Expression_Error_Use_Successive_MemberAccess_Type(object exp)
|
||||
=> string.Format(
|
||||
GetString("Expression_Error_Use_Successive_MemberAccess_Type", nameof(exp)),
|
||||
exp);
|
||||
|
||||
/// <summary>
|
||||
/// ExpressionTree 转换类型错误,值({value}),类型({valueTypeFullName}),目标类型({typeFullName}),{exMessage}
|
||||
/// </summary>
|
||||
public static string ExpressionTree_Convert_Type_Error(object value, object valueTypeFullName, object typeFullName, object exMessage)
|
||||
=> string.Format(
|
||||
GetString("ExpressionTree_Convert_Type_Error", nameof(value), nameof(valueTypeFullName), nameof(typeFullName), nameof(exMessage)),
|
||||
value, valueTypeFullName, typeFullName, exMessage);
|
||||
|
||||
/// <summary>
|
||||
/// 未能解析分表字段值 {sqlWhere}
|
||||
/// </summary>
|
||||
public static string Failed_SubTable_FieldValue(object sqlWhere)
|
||||
=> string.Format(
|
||||
GetString("Failed_SubTable_FieldValue", nameof(sqlWhere)),
|
||||
sqlWhere);
|
||||
|
||||
/// <summary>
|
||||
/// AsTable 未实现的功能 {asTable}
|
||||
/// </summary>
|
||||
public static string Functions_AsTable_NotImplemented(object asTable)
|
||||
=> string.Format(
|
||||
GetString("Functions_AsTable_NotImplemented", nameof(asTable)),
|
||||
asTable);
|
||||
|
||||
/// <summary>
|
||||
/// GBase 暂时不支持逗号以外的分割符
|
||||
/// </summary>
|
||||
public static string GBase_NotSupport_OtherThanCommas
|
||||
=> GetString("GBase_NotSupport_OtherThanCommas");
|
||||
|
||||
/// <summary>
|
||||
/// tableName:{tableName} 生成了相同的分表名
|
||||
/// </summary>
|
||||
public static string Generated_Same_SubTable(object tableName)
|
||||
=> string.Format(
|
||||
GetString("Generated_Same_SubTable", nameof(tableName)),
|
||||
tableName);
|
||||
|
||||
/// <summary>
|
||||
/// GetPrimarys 传递的参数 "{primary}" 不正确,它不属于字典数据的键名
|
||||
/// </summary>
|
||||
public static string GetPrimarys_ParameterError_IsNotDictKey (object primary)
|
||||
=> string.Format(
|
||||
GetString("GetPrimarys_ParameterError_IsNotDictKey ", nameof(primary)),
|
||||
primary);
|
||||
|
||||
/// <summary>
|
||||
/// 已经指定了 {first},不能再指定 {second}
|
||||
/// </summary>
|
||||
public static string Has_Specified_Cannot_Specified_Second(object first, object second)
|
||||
=> string.Format(
|
||||
GetString("Has_Specified_Cannot_Specified_Second", nameof(first), nameof(second)),
|
||||
first, second);
|
||||
|
||||
/// <summary>
|
||||
/// {tb2DbName}.{mp2MemberName} 被忽略,请检查 IsIgnore 设置,确认 get/set 为 public
|
||||
/// </summary>
|
||||
public static string Ignored_Check_Confirm_PublicGetSet(object tb2DbName, object mp2MemberName)
|
||||
=> string.Format(
|
||||
GetString("Ignored_Check_Confirm_PublicGetSet", nameof(tb2DbName), nameof(mp2MemberName)),
|
||||
tb2DbName, mp2MemberName);
|
||||
|
||||
/// <summary>
|
||||
/// Include 参数类型错误
|
||||
/// </summary>
|
||||
public static string Include_ParameterType_Error
|
||||
=> GetString("Include_ParameterType_Error");
|
||||
|
||||
/// <summary>
|
||||
/// Include 参数类型错误,集合属性请使用 IncludeMany
|
||||
/// </summary>
|
||||
public static string Include_ParameterType_Error_Use_IncludeMany
|
||||
=> GetString("Include_ParameterType_Error_Use_IncludeMany");
|
||||
|
||||
/// <summary>
|
||||
/// Include 参数类型错误,表达式类型应该为 MemberAccess
|
||||
/// </summary>
|
||||
public static string Include_ParameterType_Error_Use_MemberAccess
|
||||
=> GetString("Include_ParameterType_Error_Use_MemberAccess");
|
||||
|
||||
/// <summary>
|
||||
/// IncludeMany 类型 {tbTypeDisplayCsharp} 的属性 {collMemMemberName} 不是有效的导航属性,提示:IsIgnore = true 不会成为导航属性
|
||||
/// </summary>
|
||||
public static string IncludeMany_NotValid_Navigation(object tbTypeDisplayCsharp, object collMemMemberName)
|
||||
=> string.Format(
|
||||
GetString("IncludeMany_NotValid_Navigation", nameof(tbTypeDisplayCsharp), nameof(collMemMemberName)),
|
||||
tbTypeDisplayCsharp, collMemMemberName);
|
||||
|
||||
/// <summary>
|
||||
/// IncludeMany {navigateSelector} 参数错误,Select 只可以使用一个参数的方法,正确格式:.Select(t =>new TNavigate {{}})
|
||||
/// </summary>
|
||||
public static string IncludeMany_ParameterError_OnlyUseOneParameter(object navigateSelector)
|
||||
=> string.Format(
|
||||
GetString("IncludeMany_ParameterError_OnlyUseOneParameter", nameof(navigateSelector)),
|
||||
navigateSelector);
|
||||
|
||||
/// <summary>
|
||||
/// IncludeMany {navigateSelector} 参数错误,Select lambda参数返回值必须和 {collMemElementType} 类型一致
|
||||
/// </summary>
|
||||
public static string IncludeMany_ParameterError_Select_ReturnConsistentType(object navigateSelector, object collMemElementType)
|
||||
=> string.Format(
|
||||
GetString("IncludeMany_ParameterError_Select_ReturnConsistentType", nameof(navigateSelector), nameof(collMemElementType)),
|
||||
navigateSelector, collMemElementType);
|
||||
|
||||
/// <summary>
|
||||
/// IncludeMany 参数1 类型错误,表达式类型应该为 MemberAccess
|
||||
/// </summary>
|
||||
public static string IncludeMany_ParameterType_Error_Use_MemberAccess
|
||||
=> GetString("IncludeMany_ParameterType_Error_Use_MemberAccess");
|
||||
|
||||
/// <summary>
|
||||
/// IncludeMany {navigateSelector} 参数类型错误,正确格式: a.collections.Take(1).Where(c =>c.aid == a.id).Select(a=> new TNavigate{{}})
|
||||
/// </summary>
|
||||
public static string IncludeMany_ParameterTypeError(object navigateSelector)
|
||||
=> string.Format(
|
||||
GetString("IncludeMany_ParameterTypeError", nameof(navigateSelector)),
|
||||
navigateSelector);
|
||||
|
||||
/// <summary>
|
||||
/// ISelect.InsertInto() 未选择属性: {displayCsharp}
|
||||
/// </summary>
|
||||
public static string InsertInto_No_Property_Selected(object displayCsharp)
|
||||
=> string.Format(
|
||||
GetString("InsertInto_No_Property_Selected", nameof(displayCsharp)),
|
||||
displayCsharp);
|
||||
|
||||
/// <summary>
|
||||
/// ISelect.InsertInto() 类型错误: {displayCsharp}
|
||||
/// </summary>
|
||||
public static string InsertInto_TypeError(object displayCsharp)
|
||||
=> string.Format(
|
||||
GetString("InsertInto_TypeError", nameof(displayCsharp)),
|
||||
displayCsharp);
|
||||
|
||||
/// <summary>
|
||||
/// InsertOrUpdate 功能执行 merge into 要求实体类 {CsName} 必须有主键
|
||||
/// </summary>
|
||||
public static string InsertOrUpdate_Must_Primary_Key(object CsName)
|
||||
=> string.Format(
|
||||
GetString("InsertOrUpdate_Must_Primary_Key", nameof(CsName)),
|
||||
CsName);
|
||||
|
||||
/// <summary>
|
||||
/// InsertOrUpdate<>的泛型参数 不支持 {typeofT1},请传递您的实体类
|
||||
/// </summary>
|
||||
public static string InsertOrUpdate_NotSuport_Generic_UseEntity(object typeofT1)
|
||||
=> string.Format(
|
||||
GetString("InsertOrUpdate_NotSuport_Generic_UseEntity", nameof(typeofT1)),
|
||||
typeofT1);
|
||||
|
||||
/// <summary>
|
||||
/// 【延时加载】功能需要安装 FreeSql.Extensions.LazyLoading.dll,可前往 nuget 下载
|
||||
/// </summary>
|
||||
public static string Install_FreeSql_Extensions_LazyLoading
|
||||
=> GetString("Install_FreeSql_Extensions_LazyLoading");
|
||||
|
||||
/// <summary>
|
||||
/// 【延时加载】{trytbTypeName} 编译错误:{exMessage}\r\n\r\n{cscode}
|
||||
/// </summary>
|
||||
public static string LazyLoading_CompilationError(object trytbTypeName, object exMessage, object cscode)
|
||||
=> string.Format(
|
||||
GetString("LazyLoading_CompilationError", nameof(trytbTypeName), nameof(exMessage), nameof(cscode)),
|
||||
trytbTypeName, exMessage, cscode);
|
||||
|
||||
/// <summary>
|
||||
/// 【延时加载】实体类型 {trytbTypeName} 必须声明为 public
|
||||
/// </summary>
|
||||
public static string LazyLoading_EntityMustDeclarePublic(object trytbTypeName)
|
||||
=> string.Format(
|
||||
GetString("LazyLoading_EntityMustDeclarePublic", nameof(trytbTypeName)),
|
||||
trytbTypeName);
|
||||
|
||||
/// <summary>
|
||||
/// ManyToMany 导航属性 .AsSelect() 暂时不可用于 Sum/Avg/Max/Min/First/ToOne/ToList 方法
|
||||
/// </summary>
|
||||
public static string ManyToMany_AsSelect_NotSupport_Sum_Avg_etc
|
||||
=> GetString("ManyToMany_AsSelect_NotSupport_Sum_Avg_etc");
|
||||
|
||||
/// <summary>
|
||||
/// 【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 在 {tbmidCsName} 中没有找到对应的字段,如:{midTypePropsTrytbName}{findtrytbPkCsName}、{midTypePropsTrytbName}_{findtrytbPkCsName}
|
||||
/// </summary>
|
||||
public static string ManyToMany_NotFound_CorrespondingField(object trytbTypeName, object pnvName, object tbmidCsName, object midTypePropsTrytbName, object findtrytbPkCsName)
|
||||
=> string.Format(
|
||||
GetString("ManyToMany_NotFound_CorrespondingField", nameof(trytbTypeName), nameof(pnvName), nameof(tbmidCsName), nameof(midTypePropsTrytbName), nameof(findtrytbPkCsName)),
|
||||
trytbTypeName, pnvName, tbmidCsName, midTypePropsTrytbName, findtrytbPkCsName);
|
||||
|
||||
/// <summary>
|
||||
/// 【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,实体类型 {tbrefTypeName} 缺少主键标识,[Column(IsPrimary = true)]
|
||||
/// </summary>
|
||||
public static string ManyToMany_ParsingError_EntityMissing_PrimaryKey(object trytbTypeName, object pnvName, object tbrefTypeName)
|
||||
=> string.Format(
|
||||
GetString("ManyToMany_ParsingError_EntityMissing_PrimaryKey", nameof(trytbTypeName), nameof(pnvName), nameof(tbrefTypeName)),
|
||||
trytbTypeName, pnvName, tbrefTypeName);
|
||||
|
||||
/// <summary>
|
||||
/// 【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,实体类型 {tbrefTypeName} 必须存在对应的 [Navigate(ManyToMany = x)] 集合属性
|
||||
/// </summary>
|
||||
public static string ManyToMany_ParsingError_EntityMustHas_NavigateCollection(object trytbTypeName, object pnvName, object tbrefTypeName)
|
||||
=> string.Format(
|
||||
GetString("ManyToMany_ParsingError_EntityMustHas_NavigateCollection", nameof(trytbTypeName), nameof(pnvName), nameof(tbrefTypeName)),
|
||||
trytbTypeName, pnvName, tbrefTypeName);
|
||||
|
||||
/// <summary>
|
||||
/// 【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,{tbmidCsName}.{trycolCsName} 和 {trytbCsName}.{trytbPrimarysCsName} 类型不一致
|
||||
/// </summary>
|
||||
public static string ManyToMany_ParsingError_InconsistentType(object trytbTypeName, object pnvName, object tbmidCsName, object trycolCsName, object trytbCsName, object trytbPrimarysCsName)
|
||||
=> string.Format(
|
||||
GetString("ManyToMany_ParsingError_InconsistentType", nameof(trytbTypeName), nameof(pnvName), nameof(tbmidCsName), nameof(trycolCsName), nameof(trytbCsName), nameof(trytbPrimarysCsName)),
|
||||
trytbTypeName, pnvName, tbmidCsName, trycolCsName, trytbCsName, trytbPrimarysCsName);
|
||||
|
||||
/// <summary>
|
||||
/// 【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,中间类 {tbmidCsName}.{midTypePropsTrytbName} 错误:{exMessage}
|
||||
/// </summary>
|
||||
public static string ManyToMany_ParsingError_IntermediateClass_ErrorMessage(object trytbTypeName, object pnvName, object tbmidCsName, object midTypePropsTrytbName, object exMessage)
|
||||
=> string.Format(
|
||||
GetString("ManyToMany_ParsingError_IntermediateClass_ErrorMessage", nameof(trytbTypeName), nameof(pnvName), nameof(tbmidCsName), nameof(midTypePropsTrytbName), nameof(exMessage)),
|
||||
trytbTypeName, pnvName, tbmidCsName, midTypePropsTrytbName, exMessage);
|
||||
|
||||
/// <summary>
|
||||
/// 【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,中间类 {tbmidCsName}.{midTypePropsTrytbName} 导航属性不是【ManyToOne】或【OneToOne】
|
||||
/// </summary>
|
||||
public static string ManyToMany_ParsingError_IntermediateClass_NotManyToOne_OneToOne(object trytbTypeName, object pnvName, object tbmidCsName, object midTypePropsTrytbName)
|
||||
=> string.Format(
|
||||
GetString("ManyToMany_ParsingError_IntermediateClass_NotManyToOne_OneToOne", nameof(trytbTypeName), nameof(pnvName), nameof(tbmidCsName), nameof(midTypePropsTrytbName)),
|
||||
trytbTypeName, pnvName, tbmidCsName, midTypePropsTrytbName);
|
||||
|
||||
/// <summary>
|
||||
/// 映射异常:{name} 没有一个属性名相同
|
||||
/// </summary>
|
||||
public static string Mapping_Exception_HasNo_SamePropertyName(object name)
|
||||
=> string.Format(
|
||||
GetString("Mapping_Exception_HasNo_SamePropertyName", nameof(name)),
|
||||
name);
|
||||
|
||||
/// <summary>
|
||||
/// Ado.MasterPool 值为 null,该操作无法自启用事务,请显式传递【事务对象】解决
|
||||
/// </summary>
|
||||
public static string MasterPool_IsNull_UseTransaction
|
||||
=> GetString("MasterPool_IsNull_UseTransaction");
|
||||
|
||||
/// <summary>
|
||||
/// 缺少 FreeSql 数据库实现包:FreeSql.Provider.{Provider}.dll,可前往 nuget 下载
|
||||
/// </summary>
|
||||
public static string Missing_FreeSqlProvider_Package(object Provider)
|
||||
=> string.Format(
|
||||
GetString("Missing_FreeSqlProvider_Package", nameof(Provider)),
|
||||
Provider);
|
||||
|
||||
/// <summary>
|
||||
/// 缺少 FreeSql 数据库实现包:{dll},可前往 nuget 下载;如果存在 {dll} 依然报错(原因是环境问题导致反射不到类型),请在 UseConnectionString/UseConnectionFactory 第三个参数手工传入 typeof({providerType})
|
||||
/// </summary>
|
||||
public static string Missing_FreeSqlProvider_Package_Reason(object dll, object providerType)
|
||||
=> string.Format(
|
||||
GetString("Missing_FreeSqlProvider_Package_Reason", nameof(dll), nameof(providerType)),
|
||||
dll, providerType);
|
||||
|
||||
/// <summary>
|
||||
/// 导航属性 {trytbTypeName}.{pnvName} 特性 [Navigate] Bind 数目({bindColumnsCount}) 与 外部主键数目({tbrefPrimarysLength}) 不相同
|
||||
/// </summary>
|
||||
public static string Navigation_Bind_Number_Different(object trytbTypeName, object pnvName, object bindColumnsCount, object tbrefPrimarysLength)
|
||||
=> string.Format(
|
||||
GetString("Navigation_Bind_Number_Different", nameof(trytbTypeName), nameof(pnvName), nameof(bindColumnsCount), nameof(tbrefPrimarysLength)),
|
||||
trytbTypeName, pnvName, bindColumnsCount, tbrefPrimarysLength);
|
||||
|
||||
/// <summary>
|
||||
/// {tb2DbName}.{mp2MemberName} 导航属性集合忘了 .AsSelect() 吗?如果在 ToList(a => a.{mp2MemberName}) 中使用,请移步参考 IncludeMany 文档。
|
||||
/// </summary>
|
||||
public static string Navigation_Missing_AsSelect(object tb2DbName, object mp2MemberName)
|
||||
=> string.Format(
|
||||
GetString("Navigation_Missing_AsSelect", nameof(tb2DbName), nameof(mp2MemberName)),
|
||||
tb2DbName, mp2MemberName);
|
||||
|
||||
/// <summary>
|
||||
/// 【导航属性】{trytbTypeDisplayCsharp}.{pName} 缺少 set 属性
|
||||
/// </summary>
|
||||
public static string Navigation_Missing_SetProperty(object trytbTypeDisplayCsharp, object pName)
|
||||
=> string.Format(
|
||||
GetString("Navigation_Missing_SetProperty", nameof(trytbTypeDisplayCsharp), nameof(pName)),
|
||||
trytbTypeDisplayCsharp, pName);
|
||||
|
||||
/// <summary>
|
||||
/// 导航属性 {trytbTypeName}.{pnvName} 没有找到对应的字段,如:{pnvName}{findtbrefPkCsName}、{pnvName}_{findtbrefPkCsName}。或者使用 [Navigate] 特性指定关系映射。
|
||||
/// </summary>
|
||||
public static string Navigation_NotFound_CorrespondingField(object trytbTypeName, object pnvName, object findtbrefPkCsName)
|
||||
=> string.Format(
|
||||
GetString("Navigation_NotFound_CorrespondingField", nameof(trytbTypeName), nameof(pnvName), nameof(findtbrefPkCsName)),
|
||||
trytbTypeName, pnvName, findtbrefPkCsName);
|
||||
|
||||
/// <summary>
|
||||
/// 导航属性 {trytbTypeName}.{pnvName} 解析错误,实体类型 {trytcTypeName} 缺少主键标识,[Column(IsPrimary = true)]
|
||||
/// </summary>
|
||||
public static string Navigation_ParsingError_EntityMissingPrimaryKey(object trytbTypeName, object pnvName, object trytcTypeName)
|
||||
=> string.Format(
|
||||
GetString("Navigation_ParsingError_EntityMissingPrimaryKey", nameof(trytbTypeName), nameof(pnvName), nameof(trytcTypeName)),
|
||||
trytbTypeName, pnvName, trytcTypeName);
|
||||
|
||||
/// <summary>
|
||||
/// 导航属性 {trytbTypeName}.{pnvName} 解析错误,{trytbCsName}.{trycolCsName} 和 {tbrefCsName}.{tbrefPrimarysCsName} 类型不一致
|
||||
/// </summary>
|
||||
public static string Navigation_ParsingError_InconsistentType(object trytbTypeName, object pnvName, object trytbCsName, object trycolCsName, object tbrefCsName, object tbrefPrimarysCsName)
|
||||
=> string.Format(
|
||||
GetString("Navigation_ParsingError_InconsistentType", nameof(trytbTypeName), nameof(pnvName), nameof(trytbCsName), nameof(trycolCsName), nameof(tbrefCsName), nameof(tbrefPrimarysCsName)),
|
||||
trytbTypeName, pnvName, trytbCsName, trycolCsName, tbrefCsName, tbrefPrimarysCsName);
|
||||
|
||||
/// <summary>
|
||||
/// 导航属性 {trytbTypeName}.{pnvName} 特性 [Navigate] 解析错误,在 {tbrefTypeName} 未找到属性:{bi}
|
||||
/// </summary>
|
||||
public static string Navigation_ParsingError_NotFound_Property(object trytbTypeName, object pnvName, object tbrefTypeName, object bi)
|
||||
=> string.Format(
|
||||
GetString("Navigation_ParsingError_NotFound_Property", nameof(trytbTypeName), nameof(pnvName), nameof(tbrefTypeName), nameof(bi)),
|
||||
trytbTypeName, pnvName, tbrefTypeName, bi);
|
||||
|
||||
/// <summary>
|
||||
/// {tableTypeDisplayCsharp} 没有定义主键,无法使用 SetSource,请尝试 SetDto
|
||||
/// </summary>
|
||||
public static string NoPrimaryKey_UseSetDto(object tableTypeDisplayCsharp)
|
||||
=> string.Format(
|
||||
GetString("NoPrimaryKey_UseSetDto", nameof(tableTypeDisplayCsharp)),
|
||||
tableTypeDisplayCsharp);
|
||||
|
||||
/// <summary>
|
||||
/// 没有定义属性
|
||||
/// </summary>
|
||||
public static string NoProperty_Defined
|
||||
=> GetString("NoProperty_Defined");
|
||||
|
||||
/// <summary>
|
||||
/// 未实现
|
||||
/// </summary>
|
||||
public static string Not_Implemented
|
||||
=> GetString("Not_Implemented");
|
||||
|
||||
/// <summary>
|
||||
/// 未实现函数表达式 {exp} 解析
|
||||
/// </summary>
|
||||
public static string Not_Implemented_Expression(object exp)
|
||||
=> string.Format(
|
||||
GetString("Not_Implemented_Expression", nameof(exp)),
|
||||
exp);
|
||||
|
||||
/// <summary>
|
||||
/// 未实现函数表达式 {exp} 解析,参数 {expArguments} 必须为常量
|
||||
/// </summary>
|
||||
public static string Not_Implemented_Expression_ParameterUseConstant(object exp, object expArguments)
|
||||
=> string.Format(
|
||||
GetString("Not_Implemented_Expression_ParameterUseConstant", nameof(exp), nameof(expArguments)),
|
||||
exp, expArguments);
|
||||
|
||||
/// <summary>
|
||||
/// 未实现函数表达式 {exp} 解析,如果正在操作导航属性集合,请使用 .AsSelect().{exp3MethodName}({exp3ArgumentsCount})
|
||||
/// </summary>
|
||||
public static string Not_Implemented_Expression_UseAsSelect(object exp, object exp3MethodName, object exp3ArgumentsCount)
|
||||
=> string.Format(
|
||||
GetString("Not_Implemented_Expression_UseAsSelect", nameof(exp), nameof(exp3MethodName), nameof(exp3ArgumentsCount)),
|
||||
exp, exp3MethodName, exp3ArgumentsCount);
|
||||
|
||||
/// <summary>
|
||||
/// 未实现 MemberAccess 下的 Constant
|
||||
/// </summary>
|
||||
public static string Not_Implemented_MemberAcess_Constant
|
||||
=> GetString("Not_Implemented_MemberAcess_Constant");
|
||||
|
||||
/// <summary>
|
||||
/// 未实现 {name}
|
||||
/// </summary>
|
||||
public static string Not_Implemented_Name(object name)
|
||||
=> string.Format(
|
||||
GetString("Not_Implemented_Name", nameof(name)),
|
||||
name);
|
||||
|
||||
/// <summary>
|
||||
/// 不支持
|
||||
/// </summary>
|
||||
public static string Not_Support
|
||||
=> GetString("Not_Support");
|
||||
|
||||
/// <summary>
|
||||
/// {dataType} 不支持 OrderByRandom 随机排序
|
||||
/// </summary>
|
||||
public static string Not_Support_OrderByRandom(object dataType)
|
||||
=> string.Format(
|
||||
GetString("Not_Support_OrderByRandom", nameof(dataType)),
|
||||
dataType);
|
||||
|
||||
/// <summary>
|
||||
/// {property} 不是有效的导航属性
|
||||
/// </summary>
|
||||
public static string Not_Valid_Navigation_Property(object property)
|
||||
=> string.Format(
|
||||
GetString("Not_Valid_Navigation_Property", nameof(property)),
|
||||
property);
|
||||
|
||||
/// <summary>
|
||||
/// {dbName} 找不到列 {memberName}
|
||||
/// </summary>
|
||||
public static string NotFound_Column(object dbName, object memberName)
|
||||
=> string.Format(
|
||||
GetString("NotFound_Column", nameof(dbName), nameof(memberName)),
|
||||
dbName, memberName);
|
||||
|
||||
/// <summary>
|
||||
/// 找不到 {CsName} 对应的列
|
||||
/// </summary>
|
||||
public static string NotFound_CsName_Column(object CsName)
|
||||
=> string.Format(
|
||||
GetString("NotFound_CsName_Column", nameof(CsName)),
|
||||
CsName);
|
||||
|
||||
/// <summary>
|
||||
/// 找不到属性:{memberName}
|
||||
/// </summary>
|
||||
public static string NotFound_Property(object memberName)
|
||||
=> string.Format(
|
||||
GetString("NotFound_Property", nameof(memberName)),
|
||||
memberName);
|
||||
|
||||
/// <summary>
|
||||
/// 找不到属性名 {proto}
|
||||
/// </summary>
|
||||
public static string NotFound_PropertyName(object proto)
|
||||
=> string.Format(
|
||||
GetString("NotFound_PropertyName", nameof(proto)),
|
||||
proto);
|
||||
|
||||
/// <summary>
|
||||
/// Custom 找不到对应的{{ 反射信息 }}:{fiValueCustomArray}
|
||||
/// </summary>
|
||||
public static string NotFound_Reflection(object fiValueCustomArray)
|
||||
=> string.Format(
|
||||
GetString("NotFound_Reflection", nameof(fiValueCustomArray)),
|
||||
fiValueCustomArray);
|
||||
|
||||
/// <summary>
|
||||
/// Custom 找不到对应的{{ 静态方法名 }}:{fiValueCustomArray}
|
||||
/// </summary>
|
||||
public static string NotFound_Static_MethodName(object fiValueCustomArray)
|
||||
=> string.Format(
|
||||
GetString("NotFound_Static_MethodName", nameof(fiValueCustomArray)),
|
||||
fiValueCustomArray);
|
||||
|
||||
/// <summary>
|
||||
/// [Table(AsTable = xx)] 设置的属性名 {atmGroupsValue} 不存在
|
||||
/// </summary>
|
||||
public static string NotFound_Table_Property_AsTable(object atmGroupsValue)
|
||||
=> string.Format(
|
||||
GetString("NotFound_Table_Property_AsTable", nameof(atmGroupsValue)),
|
||||
atmGroupsValue);
|
||||
|
||||
/// <summary>
|
||||
/// 未指定 UseConnectionString 或者 UseConnectionFactory
|
||||
/// </summary>
|
||||
public static string NotSpecified_UseConnectionString_UseConnectionFactory
|
||||
=> GetString("NotSpecified_UseConnectionString_UseConnectionFactory");
|
||||
|
||||
/// <summary>
|
||||
/// 【{policyName}】ObjectPool.{GetName}() timeout {totalSeconds} seconds, see: https://github.com/dotnetcore/FreeSql/discussions/1081
|
||||
/// </summary>
|
||||
public static string ObjectPool_Get_Timeout(object policyName, object GetName, object totalSeconds)
|
||||
=> string.Format(
|
||||
GetString("ObjectPool_Get_Timeout", nameof(policyName), nameof(GetName), nameof(totalSeconds)),
|
||||
policyName, GetName, totalSeconds);
|
||||
|
||||
/// <summary>
|
||||
/// 【{policyName}】ObjectPool.GetAsync() The queue is too long. Policy.AsyncGetCapacity = {asyncGetCapacity}
|
||||
/// </summary>
|
||||
public static string ObjectPool_GetAsync_Queue_Long(object policyName, object asyncGetCapacity)
|
||||
=> string.Format(
|
||||
GetString("ObjectPool_GetAsync_Queue_Long", nameof(policyName), nameof(asyncGetCapacity)),
|
||||
policyName, asyncGetCapacity);
|
||||
|
||||
/// <summary>
|
||||
/// 【OneToMany】导航属性 {trytbTypeName}.{pnvName} 在 {tbrefCsName} 中没有找到对应的字段,如:{findtrytb}{findtrytbPkCsName}、{findtrytb}_{findtrytbPkCsName}
|
||||
/// </summary>
|
||||
public static string OneToMany_NotFound_CorrespondingField(object trytbTypeName, object pnvName, object tbrefCsName, object findtrytb, object findtrytbPkCsName)
|
||||
=> string.Format(
|
||||
GetString("OneToMany_NotFound_CorrespondingField", nameof(trytbTypeName), nameof(pnvName), nameof(tbrefCsName), nameof(findtrytb), nameof(findtrytbPkCsName)),
|
||||
trytbTypeName, pnvName, tbrefCsName, findtrytb, findtrytbPkCsName);
|
||||
|
||||
/// <summary>
|
||||
/// 【OneToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,{trytbCsName}.{trytbPrimarysCsName} 和 {tbrefCsName}.{trycolCsName} 类型不一致
|
||||
/// </summary>
|
||||
public static string OneToMany_ParsingError_InconsistentType(object trytbTypeName, object pnvName, object trytbCsName, object trytbPrimarysCsName, object tbrefCsName, object trycolCsName)
|
||||
=> string.Format(
|
||||
GetString("OneToMany_ParsingError_InconsistentType", nameof(trytbTypeName), nameof(pnvName), nameof(trytbCsName), nameof(trytbPrimarysCsName), nameof(tbrefCsName), nameof(trycolCsName)),
|
||||
trytbTypeName, pnvName, trytbCsName, trytbPrimarysCsName, tbrefCsName, trycolCsName);
|
||||
|
||||
/// <summary>
|
||||
/// 、{refpropName}{findtrytbPkCsName}、{refpropName}_{findtrytbPkCsName}。或者使用 [Navigate] 特性指定关系映射。
|
||||
/// </summary>
|
||||
public static string OneToMany_UseNavigate(object refpropName, object findtrytbPkCsName)
|
||||
=> string.Format(
|
||||
GetString("OneToMany_UseNavigate", nameof(refpropName), nameof(findtrytbPkCsName)),
|
||||
refpropName, findtrytbPkCsName);
|
||||
|
||||
/// <summary>
|
||||
/// 参数 field 未指定
|
||||
/// </summary>
|
||||
public static string Parameter_Field_NotSpecified
|
||||
=> GetString("Parameter_Field_NotSpecified");
|
||||
|
||||
/// <summary>
|
||||
/// {property} 参数错误,它不是集合属性,必须为 IList<T> 或者 ICollection<T>
|
||||
/// </summary>
|
||||
public static string ParameterError_NotValid_Collection(object property)
|
||||
=> string.Format(
|
||||
GetString("ParameterError_NotValid_Collection", nameof(property)),
|
||||
property);
|
||||
|
||||
/// <summary>
|
||||
/// {property} 参数错误,它不是有效的导航属性
|
||||
/// </summary>
|
||||
public static string ParameterError_NotValid_Navigation(object property)
|
||||
=> string.Format(
|
||||
GetString("ParameterError_NotValid_Navigation", nameof(property)),
|
||||
property);
|
||||
|
||||
/// <summary>
|
||||
/// {where} 参数错误,{keyval} 不是有效的属性名,在实体类 {reftbTypeDisplayCsharp} 无法找到
|
||||
/// </summary>
|
||||
public static string ParameterError_NotValid_PropertyName(object where, object keyval, object reftbTypeDisplayCsharp)
|
||||
=> string.Format(
|
||||
GetString("ParameterError_NotValid_PropertyName", nameof(where), nameof(keyval), nameof(reftbTypeDisplayCsharp)),
|
||||
where, keyval, reftbTypeDisplayCsharp);
|
||||
|
||||
/// <summary>
|
||||
/// {property} 参数错误,格式 "TopicId=Id,多组使用逗号连接"
|
||||
/// </summary>
|
||||
public static string ParameterError_NotValid_UseCommas(object property)
|
||||
=> string.Format(
|
||||
GetString("ParameterError_NotValid_UseCommas", nameof(property)),
|
||||
property);
|
||||
|
||||
/// <summary>
|
||||
/// 解析失败 {callExpMethodName} {message}
|
||||
/// </summary>
|
||||
public static string Parsing_Failed(object callExpMethodName, object message)
|
||||
=> string.Format(
|
||||
GetString("Parsing_Failed", nameof(callExpMethodName), nameof(message)),
|
||||
callExpMethodName, message);
|
||||
|
||||
/// <summary>
|
||||
/// 【{policyName}】The ObjectPool has been disposed, see: https://github.com/dotnetcore/FreeSql/discussions/1079
|
||||
/// </summary>
|
||||
public static string Policy_ObjectPool_Dispose(object policyName)
|
||||
=> string.Format(
|
||||
GetString("Policy_ObjectPool_Dispose", nameof(policyName)),
|
||||
policyName);
|
||||
|
||||
/// <summary>
|
||||
/// 【{policyName}】状态不可用,等待后台检查程序恢复方可使用。{UnavailableExceptionMessage}
|
||||
/// </summary>
|
||||
public static string Policy_Status_NotAvailable(object policyName, object UnavailableExceptionMessage)
|
||||
=> string.Format(
|
||||
GetString("Policy_Status_NotAvailable", nameof(policyName), nameof(UnavailableExceptionMessage)),
|
||||
policyName, UnavailableExceptionMessage);
|
||||
|
||||
/// <summary>
|
||||
/// 属性{trytbVersionColumnCsName} 被标注为行锁(乐观锁)(IsVersion),但其必须为数字类型 或者 byte[],并且不可为 Nullable
|
||||
/// </summary>
|
||||
public static string Properties_AsRowLock_Must_Numeric_Byte(object trytbVersionColumnCsName)
|
||||
=> string.Format(
|
||||
GetString("Properties_AsRowLock_Must_Numeric_Byte", nameof(trytbVersionColumnCsName)),
|
||||
trytbVersionColumnCsName);
|
||||
|
||||
/// <summary>
|
||||
/// properties 参数不能为空
|
||||
/// </summary>
|
||||
public static string Properties_Cannot_Null
|
||||
=> GetString("Properties_Cannot_Null");
|
||||
|
||||
/// <summary>
|
||||
/// {property} 属性名无法找到
|
||||
/// </summary>
|
||||
public static string Property_Cannot_Find(object property)
|
||||
=> string.Format(
|
||||
GetString("Property_Cannot_Find", nameof(property)),
|
||||
property);
|
||||
|
||||
/// <summary>
|
||||
/// Range 要求 Value 应该逗号分割,并且长度为 2
|
||||
/// </summary>
|
||||
public static string Range_Comma_Separateda_By2Char
|
||||
=> GetString("Range_Comma_Separateda_By2Char");
|
||||
|
||||
/// <summary>
|
||||
/// 回滚
|
||||
/// </summary>
|
||||
public static string RollBack
|
||||
=> GetString("RollBack");
|
||||
|
||||
/// <summary>
|
||||
/// 运行时错误,反射获取 IncludeMany 方法失败
|
||||
/// </summary>
|
||||
public static string RunTimeError_Reflection_IncludeMany
|
||||
=> GetString("RunTimeError_Reflection_IncludeMany");
|
||||
|
||||
/// <summary>
|
||||
/// {qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]
|
||||
/// </summary>
|
||||
public static string Set_Column_IsNullable_False(object qoteSql)
|
||||
=> string.Format(
|
||||
GetString("Set_Column_IsNullable_False", nameof(qoteSql)),
|
||||
qoteSql);
|
||||
|
||||
/// <summary>
|
||||
/// 分表字段值 "{dt}" 不能小于 "{beginTime} "
|
||||
/// </summary>
|
||||
public static string SubTableFieldValue_CannotLessThen(object dt, object beginTime)
|
||||
=> string.Format(
|
||||
GetString("SubTableFieldValue_CannotLessThen", nameof(dt), nameof(beginTime)),
|
||||
dt, beginTime);
|
||||
|
||||
/// <summary>
|
||||
/// 分表字段值不能为 null
|
||||
/// </summary>
|
||||
public static string SubTableFieldValue_IsNotNull
|
||||
=> GetString("SubTableFieldValue_IsNotNull");
|
||||
|
||||
/// <summary>
|
||||
/// 分表字段值 "{columnValue}" 不能转化成 DateTime
|
||||
/// </summary>
|
||||
public static string SubTableFieldValue_NotConvertDateTime(object columnValue)
|
||||
=> string.Format(
|
||||
GetString("SubTableFieldValue_NotConvertDateTime", nameof(columnValue)),
|
||||
columnValue);
|
||||
|
||||
/// <summary>
|
||||
/// 分表字段值 "{dt}" 未匹配到分表名
|
||||
/// </summary>
|
||||
public static string SubTableFieldValue_NotMatchTable(object dt)
|
||||
=> string.Format(
|
||||
GetString("SubTableFieldValue_NotMatchTable", nameof(dt)),
|
||||
dt);
|
||||
|
||||
/// <summary>
|
||||
/// T2 类型错误
|
||||
/// </summary>
|
||||
public static string T2_Type_Error
|
||||
=> GetString("T2_Type_Error");
|
||||
|
||||
/// <summary>
|
||||
/// tableName 格式错误,示例:“log_{yyyyMMdd}”
|
||||
/// </summary>
|
||||
public static string TableName_Format_Error(object yyyyMMdd)
|
||||
=> string.Format(
|
||||
GetString("TableName_Format_Error", nameof(yyyyMMdd)),
|
||||
yyyyMMdd);
|
||||
|
||||
/// <summary>
|
||||
/// {Type}.AsType 参数错误,请传入正确的实体类型
|
||||
/// </summary>
|
||||
public static string Type_AsType_Parameter_Error(object Type)
|
||||
=> string.Format(
|
||||
GetString("Type_AsType_Parameter_Error", nameof(Type)),
|
||||
Type);
|
||||
|
||||
/// <summary>
|
||||
/// {thatFullName} 类型无法访问构造函数
|
||||
/// </summary>
|
||||
public static string Type_Cannot_Access_Constructor(object thatFullName)
|
||||
=> string.Format(
|
||||
GetString("Type_Cannot_Access_Constructor", nameof(thatFullName)),
|
||||
thatFullName);
|
||||
|
||||
/// <summary>
|
||||
/// {name} 类型错误
|
||||
/// </summary>
|
||||
public static string Type_Error_Name(object name)
|
||||
=> string.Format(
|
||||
GetString("Type_Error_Name", nameof(name)),
|
||||
name);
|
||||
|
||||
/// <summary>
|
||||
/// {Type}.AsType 参数不支持指定为 object
|
||||
/// </summary>
|
||||
public static string TypeAsType_NotSupport_Object(object Type)
|
||||
=> string.Format(
|
||||
GetString("TypeAsType_NotSupport_Object", nameof(Type)),
|
||||
Type);
|
||||
|
||||
/// <summary>
|
||||
/// 类型 {typeofFullName} 错误,不能使用 IncludeMany
|
||||
/// </summary>
|
||||
public static string TypeError_CannotUse_IncludeMany(object typeofFullName)
|
||||
=> string.Format(
|
||||
GetString("TypeError_CannotUse_IncludeMany", nameof(typeofFullName)),
|
||||
typeofFullName);
|
||||
|
||||
/// <summary>
|
||||
/// 无法解析表达式:{exp}
|
||||
/// </summary>
|
||||
public static string Unable_Parse_Expression(object exp)
|
||||
=> string.Format(
|
||||
GetString("Unable_Parse_Expression", nameof(exp)),
|
||||
exp);
|
||||
|
||||
/// <summary>
|
||||
/// 无法解析表达式方法 {exp3tmpCallMethodName}
|
||||
/// </summary>
|
||||
public static string Unable_Parse_ExpressionMethod(object exp3tmpCallMethodName)
|
||||
=> string.Format(
|
||||
GetString("Unable_Parse_ExpressionMethod", nameof(exp3tmpCallMethodName)),
|
||||
exp3tmpCallMethodName);
|
||||
|
||||
/// <summary>
|
||||
/// 请使用 fsql.InsertDict(dict) 方法插入字典数据
|
||||
/// </summary>
|
||||
public static string Use_InsertDict_Method
|
||||
=> GetString("Use_InsertDict_Method");
|
||||
|
||||
private static string GetString(string name, params string[] formatterNames)
|
||||
{
|
||||
var value = _resourceManager.GetString(name);
|
||||
for (var i = 0; i < formatterNames.Length; i++)
|
||||
{
|
||||
value = value.Replace("{" + formatterNames[i] + "}", "{" + i + "}");
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
5
FreeSql/Properties/CoreStrings.Designer.tt
Normal file
5
FreeSql/Properties/CoreStrings.Designer.tt
Normal file
@ -0,0 +1,5 @@
|
||||
<#
|
||||
Session["ResourceFile"] = "CoreStrings.resx";
|
||||
Session["AccessModifier"] = "public";
|
||||
#>
|
||||
<#@ include file="Resources.tt" #>
|
498
FreeSql/Properties/CoreStrings.en-US.resx
Normal file
498
FreeSql/Properties/CoreStrings.en-US.resx
Normal file
@ -0,0 +1,498 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: 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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<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:sequence>
|
||||
<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="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AsTable_PropertyName_FormatError" xml:space="preserve">
|
||||
<value>[Table(AsTable="{asTable}")] Property value formatted incorrectly</value>
|
||||
</data>
|
||||
<data name="AsTable_PropertyName_NotDateTime" xml:space="preserve">
|
||||
<value>The property name {atmGroupsValue} set by [Table (AsTable = xx)] is not of type DateTime</value>
|
||||
</data>
|
||||
<data name="Available_Failed_Get_Resource" xml:space="preserve">
|
||||
<value>{name}: Failed to get resource {statistics}</value>
|
||||
</data>
|
||||
<data name="Available_Thrown_Exception" xml:space="preserve">
|
||||
<value>{name}: An exception needs to be thrown</value>
|
||||
</data>
|
||||
<data name="Bad_Expression_Format" xml:space="preserve">
|
||||
<value>Wrong expression format {column}</value>
|
||||
</data>
|
||||
<data name="Before_Chunk_Cannot_Use_Select" xml:space="preserve">
|
||||
<value>Select is not available until the Chunk function</value>
|
||||
</data>
|
||||
<data name="Begin_Transaction_Then_ForUpdate" xml:space="preserve">
|
||||
<value>For security reasons, be sure to use ForUpdate after the transaction is open</value>
|
||||
</data>
|
||||
<data name="Cannot_Be_NULL" xml:space="preserve">
|
||||
<value>Cannot be null</value>
|
||||
</data>
|
||||
<data name="Cannot_Be_NULL_Name" xml:space="preserve">
|
||||
<value>{name} cannot be null</value>
|
||||
</data>
|
||||
<data name="Cannot_Match_Property" xml:space="preserve">
|
||||
<value>Unable to match {property}</value>
|
||||
</data>
|
||||
<data name="Cannot_Resolve_ExpressionTree" xml:space="preserve">
|
||||
<value>{property} cannot be resolved to an expression tree</value>
|
||||
</data>
|
||||
<data name="Check_UseConnectionString" xml:space="preserve">
|
||||
<value>The parameter master ConnectionString cannot be empty, check UseConnectionString</value>
|
||||
</data>
|
||||
<data name="Commit" xml:space="preserve">
|
||||
<value>Commit</value>
|
||||
</data>
|
||||
<data name="Connection_Failed_Switch_Servers" xml:space="preserve">
|
||||
<value>Connection failed, ready to switch other available servers</value>
|
||||
</data>
|
||||
<data name="Custom_Expression_ParsingError" xml:space="preserve">
|
||||
<value>Custom expression parsing error: type {exp3MethodDeclaringType} needs to define static ThreadLocal<ExpressionCallContext>field, field, field (important three reminders)</value>
|
||||
</data>
|
||||
<data name="Custom_Reflection_IsNotNull" xml:space="preserve">
|
||||
<value>Custom {Reflection Information} cannot be empty, format: {static method name}{space}{reflection information}</value>
|
||||
</data>
|
||||
<data name="Custom_StaticMethodName_IsNotNull" xml:space="preserve">
|
||||
<value>Custom {static method name} cannot be empty, format: {static method name}{space}{reflection information}</value>
|
||||
</data>
|
||||
<data name="Custom_StaticMethodName_NotSet_DynamicFilterCustom" xml:space="preserve">
|
||||
<value>Custom corresponding {{static method name}}:{fiValueCustomArray} The [DynamicFilterCustomAttribute] attribute is not set</value>
|
||||
</data>
|
||||
<data name="CustomFieldSeparatedBySpaces" xml:space="preserve">
|
||||
<value>Custom requires that Fields be space-split and 2-length in the format: {static method name}{space}{reflection information}</value>
|
||||
</data>
|
||||
<data name="DataType_AsType_Inconsistent" xml:space="preserve">
|
||||
<value>The data type of the operation ({dataDisplayCsharp}) is inconsistent with AsType ({tableTypeDisplayCsharp}). Please check.</value>
|
||||
</data>
|
||||
<data name="DateRange_Comma_Separateda_By2Char" xml:space="preserve">
|
||||
<value>DateRange requires that Value be comma-separated and 2-length</value>
|
||||
</data>
|
||||
<data name="DateRange_DateFormat_yyyy" xml:space="preserve">
|
||||
<value>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 name="DbUpdateVersionException_RowLevelOptimisticLock" xml:space="preserve">
|
||||
<value>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 name="Different_Number_SlaveConnectionString_SlaveWeights" xml:space="preserve">
|
||||
<value>The number of SlaveConnectionStrings is not the same as SlaveWeights</value>
|
||||
</data>
|
||||
<data name="Duplicate_ColumnAttribute" xml:space="preserve">
|
||||
<value>ColumnAttribute. Name {colattrName} exists repeatedly, please check (note: case insensitive)</value>
|
||||
</data>
|
||||
<data name="Duplicate_PropertyName" xml:space="preserve">
|
||||
<value>Property name {pName} exists repeatedly, please check (note: case insensitive)</value>
|
||||
</data>
|
||||
<data name="Entity_Must_Primary_Key" xml:space="preserve">
|
||||
<value>The {function} feature requires that the entity class {tableCsName} must have a primary key</value>
|
||||
</data>
|
||||
<data name="Entity_MySQL_VersionsBelow8_NotSupport_Multiple_PrimaryKeys" xml:space="preserve">
|
||||
<value>{tbTypeFullName} is a parent-child relationship, but combinations of multiple primary keys are not supported in versions below MySql 8.0</value>
|
||||
</data>
|
||||
<data name="Entity_NotParentChild_Relationship" xml:space="preserve">
|
||||
<value>{tbTypeFullName} is not a parent-child relationship and cannot be used</value>
|
||||
</data>
|
||||
<data name="EspeciallySubquery_Cannot_Parsing" xml:space="preserve">
|
||||
<value>This particular subquery cannot be resolved</value>
|
||||
</data>
|
||||
<data name="Expression_Error_Use_ParameterExpression" xml:space="preserve">
|
||||
<value>Expression error, its top object is not ParameterExpression:{exp}</value>
|
||||
</data>
|
||||
<data name="Expression_Error_Use_Successive_MemberAccess_Type" xml:space="preserve">
|
||||
<value>Expression error, it is not a continuous MemberAccess type: {exp}</value>
|
||||
</data>
|
||||
<data name="ExpressionTree_Convert_Type_Error" xml:space="preserve">
|
||||
<value>ExpressionTree conversion type error, value ({value}), type ({valueTypeFullName}), target type ({typeFullName}), Error:{exMessage}</value>
|
||||
</data>
|
||||
<data name="Failed_SubTable_FieldValue" xml:space="preserve">
|
||||
<value>Failed to parse table field value {sqlWhere}</value>
|
||||
</data>
|
||||
<data name="Functions_AsTable_NotImplemented" xml:space="preserve">
|
||||
<value>Function {asTable} not implemented by AsTable</value>
|
||||
</data>
|
||||
<data name="GBase_NotSupport_OtherThanCommas" xml:space="preserve">
|
||||
<value>GBase does not support separators other than commas at this time</value>
|
||||
</data>
|
||||
<data name="Generated_Same_SubTable" xml:space="preserve">
|
||||
<value>TableName:{tableName} generated the same table name</value>
|
||||
</data>
|
||||
<data name="GetPrimarys_ParameterError_IsNotDictKey " xml:space="preserve">
|
||||
<value>The parameter'{primary}'passed by GetPrimarys is incorrect and does not belong to the key name of the dictionary data</value>
|
||||
</data>
|
||||
<data name="Has_Specified_Cannot_Specified_Second" xml:space="preserve">
|
||||
<value>{first} has already been specified and {second} can no longer be specified</value>
|
||||
</data>
|
||||
<data name="Ignored_Check_Confirm_PublicGetSet" xml:space="preserve">
|
||||
<value>{tb2DbName}. {mp2MemberName} is ignored. Check the IsIgnore setting to make sure get/set is public</value>
|
||||
</data>
|
||||
<data name="Include_ParameterType_Error" xml:space="preserve">
|
||||
<value>Include parameter type error</value>
|
||||
</data>
|
||||
<data name="Include_ParameterType_Error_Use_IncludeMany" xml:space="preserve">
|
||||
<value>Include parameter type is wrong, use IncludeMany for collection properties</value>
|
||||
</data>
|
||||
<data name="Include_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
||||
<value>Include parameter type is wrong, expression type should be MemberAccess</value>
|
||||
</data>
|
||||
<data name="IncludeMany_NotValid_Navigation" xml:space="preserve">
|
||||
<value>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 name="IncludeMany_ParameterError_OnlyUseOneParameter" xml:space="preserve">
|
||||
<value>IncludeMany {navigateSelector} parameter is wrong, Select can only use one parameter's method, the correct format:.Select(t =>new TNavigate{{}})</value>
|
||||
</data>
|
||||
<data name="IncludeMany_ParameterError_Select_ReturnConsistentType" xml:space="preserve">
|
||||
<value>IncludeMany {navigateSelector} parameter error, Select lambda parameter return value must match {collMemElementType} type</value>
|
||||
</data>
|
||||
<data name="IncludeMany_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
||||
<value>IncludeMany parameter 1 has wrong type, expression type should be MemberAccess</value>
|
||||
</data>
|
||||
<data name="IncludeMany_ParameterTypeError" xml:space="preserve">
|
||||
<value>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 name="InsertInto_No_Property_Selected" xml:space="preserve">
|
||||
<value>ISelect. InsertInto() did not select an attribute: {displayCsharp}</value>
|
||||
</data>
|
||||
<data name="InsertInto_TypeError" xml:space="preserve">
|
||||
<value>ISelect. InsertInto() type error: {displayCsharp}</value>
|
||||
</data>
|
||||
<data name="InsertOrUpdate_Must_Primary_Key" xml:space="preserve">
|
||||
<value>The InsertOrUpdate function performs merge into requiring the entity class {CsName} to have a primary key</value>
|
||||
</data>
|
||||
<data name="InsertOrUpdate_NotSuport_Generic_UseEntity" xml:space="preserve">
|
||||
<value>The generic parameter for InsertOrUpdate<>does not support {typeofT1}. Pass in your entity class</value>
|
||||
</data>
|
||||
<data name="Install_FreeSql_Extensions_LazyLoading" xml:space="preserve">
|
||||
<value>FreeSql needs to be installed for Delayed Loading. Extensions. LazyLoading. Dll, downloadable to nuget</value>
|
||||
</data>
|
||||
<data name="LazyLoading_CompilationError" xml:space="preserve">
|
||||
<value>{trytbTypeName} Compilation error: {exMessage}\r\n\r\n{cscode}</value>
|
||||
</data>
|
||||
<data name="LazyLoading_EntityMustDeclarePublic" xml:space="preserve">
|
||||
<value>Entity type {trytbTypeName} must be declared public</value>
|
||||
</data>
|
||||
<data name="ManyToMany_AsSelect_NotSupport_Sum_Avg_etc" xml:space="preserve">
|
||||
<value>ManyToMany navigation properties. AsSelect() is temporarily unavailable for the Sum/Avg/Max/Min/First/ToOne/ToList method</value>
|
||||
</data>
|
||||
<data name="ManyToMany_NotFound_CorrespondingField" xml:space="preserve">
|
||||
<value>[ManyToMany] Navigation property {trytbTypeName}. {pnvName} did not find a corresponding field in {tbmidCsName}, such as: {midTypePropsTrytbName}{findtrytbPkCsName}, {midTypePropsTrytbName}_ {findtrytbPkCsName}</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_EntityMissing_PrimaryKey" xml:space="preserve">
|
||||
<value>[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {tbrefTypeName} missing primary key identity, [Column (IsPrimary = true)]</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_EntityMustHas_NavigateCollection" xml:space="preserve">
|
||||
<value>[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {tbrefTypeName} must have a corresponding [Navigate (ManyToMany = x)] collection property</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_InconsistentType" xml:space="preserve">
|
||||
<value>[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, {tbmidCsName}. {trycolCsName} and {trytbCsName}. {trytbPrimarysCsName} type inconsistent</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_IntermediateClass_ErrorMessage" xml:space="preserve">
|
||||
<value>[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, intermediate class {tbmidCsName}.{midTypePropsTrytbName} Error: {exMessage}</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_IntermediateClass_NotManyToOne_OneToOne" xml:space="preserve">
|
||||
<value>[ManyToMany] Navigation property {trytbTypeName}. {pnvName} parsing error, intermediate class {tbmidCsName}. The {midTypePropsTrytbName} navigation property is not ManyToOne or OneToOne</value>
|
||||
</data>
|
||||
<data name="Mapping_Exception_HasNo_SamePropertyName" xml:space="preserve">
|
||||
<value>Mapping exception: {name} None of the property names are the same</value>
|
||||
</data>
|
||||
<data name="MasterPool_IsNull_UseTransaction" xml:space="preserve">
|
||||
<value>Ado. MasterPool value is null, this operation cannot self-enable transactions, please explicitly pass [transaction object] resolution</value>
|
||||
</data>
|
||||
<data name="Missing_FreeSqlProvider_Package" xml:space="preserve">
|
||||
<value>Missing FreeSql database implementation package: FreeSql. Provider. {Provider}. Dll, downloadable to nuget</value>
|
||||
</data>
|
||||
<data name="Missing_FreeSqlProvider_Package_Reason" xml:space="preserve">
|
||||
<value>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 name="Navigation_Bind_Number_Different" xml:space="preserve">
|
||||
<value>Navigation property {trytbTypeName}. The number of {pnvName} attributes [Navigate] Binds ({bindColumnsCount}) is different from the number of external primary keys ({tbrefPrimarysLength})</value>
|
||||
</data>
|
||||
<data name="Navigation_Missing_AsSelect" xml:space="preserve">
|
||||
<value>{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 name="Navigation_Missing_SetProperty" xml:space="preserve">
|
||||
<value>[Navigation Properties]{trytbTypeDisplayCsharp}. Missing set attribute for {pName}</value>
|
||||
</data>
|
||||
<data name="Navigation_NotFound_CorrespondingField" xml:space="preserve">
|
||||
<value>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 name="Navigation_ParsingError_EntityMissingPrimaryKey" xml:space="preserve">
|
||||
<value>Navigation property {trytbTypeName}. {pnvName} parsing error, entity type {trytcTypeName} missing primary key identity, [Column (IsPrimary = true)]</value>
|
||||
</data>
|
||||
<data name="Navigation_ParsingError_InconsistentType" xml:space="preserve">
|
||||
<value>Navigation property {trytbTypeName}. {pnvName} parsing error, {trytbCsName}. {trycolCsName} and {tbrefCsName}. {tbrefPrimarysCsName} type inconsistent</value>
|
||||
</data>
|
||||
<data name="Navigation_ParsingError_NotFound_Property" xml:space="preserve">
|
||||
<value>Navigation property {trytbTypeName}. {pnvName} attribute [Navigate] parsing error, property not found at {tbrefTypeName}: {bi}</value>
|
||||
</data>
|
||||
<data name="NoPrimaryKey_UseSetDto" xml:space="preserve">
|
||||
<value>{tableTypeDisplayCsharp} has no primary key defined and cannot use SetSource. Try SetDto</value>
|
||||
</data>
|
||||
<data name="NoProperty_Defined" xml:space="preserve">
|
||||
<value>No properties defined</value>
|
||||
</data>
|
||||
<data name="Not_Implemented" xml:space="preserve">
|
||||
<value>Not implemented</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Expression" xml:space="preserve">
|
||||
<value>Function expression {exp} parsing not implemented</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Expression_ParameterUseConstant" xml:space="preserve">
|
||||
<value>Function expression {exp} parsing not implemented, parameter {expArguments} must be constant</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Expression_UseAsSelect" xml:space="preserve">
|
||||
<value>Function expression {exp} parsing is not implemented. Use if you are working on a navigation property collection. AsSelect (). {exp3MethodName} ({exp3ArgumentsCount})</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_MemberAcess_Constant" xml:space="preserve">
|
||||
<value>Constant under MemberAccess is not implemented</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Name" xml:space="preserve">
|
||||
<value>{name} is not implemented</value>
|
||||
</data>
|
||||
<data name="Not_Support" xml:space="preserve">
|
||||
<value>I won't support it</value>
|
||||
</data>
|
||||
<data name="Not_Support_OrderByRandom" xml:space="preserve">
|
||||
<value>{dataType} does not support OrderByRandom sorting</value>
|
||||
</data>
|
||||
<data name="Not_Valid_Navigation_Property" xml:space="preserve">
|
||||
<value>{property} is not a valid navigation property</value>
|
||||
</data>
|
||||
<data name="NotFound_Column" xml:space="preserve">
|
||||
<value>{dbName} Column {memberName} not found</value>
|
||||
</data>
|
||||
<data name="NotFound_CsName_Column" xml:space="preserve">
|
||||
<value>Cannot find the column corresponding to {CsName}</value>
|
||||
</data>
|
||||
<data name="NotFound_Property" xml:space="preserve">
|
||||
<value>Attribute not found: {memberName}</value>
|
||||
</data>
|
||||
<data name="NotFound_PropertyName" xml:space="preserve">
|
||||
<value>Property name {proto} not found</value>
|
||||
</data>
|
||||
<data name="NotFound_Reflection" xml:space="preserve">
|
||||
<value>Custom could not find the corresponding {{reflection information}}:{fiValueCustomArray}</value>
|
||||
</data>
|
||||
<data name="NotFound_Static_MethodName" xml:space="preserve">
|
||||
<value>Custom could not find the corresponding {{static method name}}:{fiValueCustomArray}</value>
|
||||
</data>
|
||||
<data name="NotFound_Table_Property_AsTable" xml:space="preserve">
|
||||
<value>The property name {atmGroupsValue} set by [Table(AsTable = xx)] does not exist</value>
|
||||
</data>
|
||||
<data name="NotSpecified_UseConnectionString_UseConnectionFactory" xml:space="preserve">
|
||||
<value>No UseConnectionString or UseConnectionFactory specified</value>
|
||||
</data>
|
||||
<data name="ObjectPool_Get_Timeout" xml:space="preserve">
|
||||
<value>[{policyName}] ObjectPool. {GetName}() timeout {totalSeconds} seconds, see: https://github.com/dotnetcore/FreeSql/discussions/1081</value>
|
||||
</data>
|
||||
<data name="ObjectPool_GetAsync_Queue_Long" xml:space="preserve">
|
||||
<value>[{policyName}] ObjectPool. GetAsync() The queue is too long. Policy. AsyncGetCapacity = {asyncGetCapacity}</value>
|
||||
</data>
|
||||
<data name="OneToMany_NotFound_CorrespondingField" xml:space="preserve">
|
||||
<value>[OneToMany] Navigation property {trytbTypeName}.{pnvName} did not find a corresponding field in {tbrefCsName}, such as: {findtrytb}{findtrytbPkCsName}, {findtrytb}_{findtrytbPkCsName}</value>
|
||||
</data>
|
||||
<data name="OneToMany_ParsingError_InconsistentType" xml:space="preserve">
|
||||
<value>[OneToMany] Navigation property {trytbTypeName}.{pnvName} parsing error, {trytbCsName}.{trytbPrimarysCsName} and {tbrefCsName}.{trycolCsName} is of inconsistent type</value>
|
||||
</data>
|
||||
<data name="OneToMany_UseNavigate" xml:space="preserve">
|
||||
<value>, {refpropName}{findtrytbPkCsName}, {refpropName}_{findtrytbPkCsName}. Or use the [Navigate] attribute to specify the relationship mapping.</value>
|
||||
</data>
|
||||
<data name="Parameter_Field_NotSpecified" xml:space="preserve">
|
||||
<value>Parameter field not specified</value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_Collection" xml:space="preserve">
|
||||
<value>The {property} parameter is incorrect, it is not a collection property and must be IList<T>or ICollection<T></value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_Navigation" xml:space="preserve">
|
||||
<value>The {property} parameter is incorrect, it is not a valid navigation property</value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_PropertyName" xml:space="preserve">
|
||||
<value>{where} parameter error, {keyval} is not a valid property name and cannot be found in entity class {reftbTypeDisplayCsharp}</value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_UseCommas" xml:space="preserve">
|
||||
<value>{property} parameter error, format "TopicId=Id, multiple groups using comma connection"</value>
|
||||
</data>
|
||||
<data name="Parsing_Failed" xml:space="preserve">
|
||||
<value>Parsing failed {callExpMethodName} {message}</value>
|
||||
</data>
|
||||
<data name="Policy_ObjectPool_Dispose" xml:space="preserve">
|
||||
<value>[{policyName}] The ObjectPool has been disposed, see: https://github.com/dotnetcore/FreeSql/discussions/1079</value>
|
||||
</data>
|
||||
<data name="Policy_Status_NotAvailable" xml:space="preserve">
|
||||
<value>The {policyName} status is unavailable and cannot be used until the background checker is restored. {UnavailableExceptionMessage}</value>
|
||||
</data>
|
||||
<data name="Properties_AsRowLock_Must_Numeric_Byte" xml:space="preserve">
|
||||
<value>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 name="Properties_Cannot_Null" xml:space="preserve">
|
||||
<value>Properrties parameter cannot be empty</value>
|
||||
</data>
|
||||
<data name="Property_Cannot_Find" xml:space="preserve">
|
||||
<value>{property} property name not found</value>
|
||||
</data>
|
||||
<data name="Range_Comma_Separateda_By2Char" xml:space="preserve">
|
||||
<value>Range requires that Value be comma-separated and 2-length</value>
|
||||
</data>
|
||||
<data name="RollBack" xml:space="preserve">
|
||||
<value>RollBack</value>
|
||||
</data>
|
||||
<data name="RunTimeError_Reflection_IncludeMany" xml:space="preserve">
|
||||
<value>Runtime error, reflection failed to get IncludeMany method</value>
|
||||
</data>
|
||||
<data name="Set_Column_IsNullable_False" xml:space="preserve">
|
||||
<value>{qoteSql} is NULL unless the attribute [Column (IsNullable = false)]</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_CannotLessThen" xml:space="preserve">
|
||||
<value>Subtable field value'{dt}'cannot be less than'{beginTime}'</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_IsNotNull" xml:space="preserve">
|
||||
<value>Subtable field value cannot be null</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_NotConvertDateTime" xml:space="preserve">
|
||||
<value>The tabular field value'{columnValue}'cannot be converted to DateTime</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_NotMatchTable" xml:space="preserve">
|
||||
<value>Table field value'{dt}'does not match table name</value>
|
||||
</data>
|
||||
<data name="T2_Type_Error" xml:space="preserve">
|
||||
<value>Type T2 Error</value>
|
||||
</data>
|
||||
<data name="TableName_Format_Error" xml:space="preserve">
|
||||
<value>TableName format error, example: "log_{yyyyMMdd}"</value>
|
||||
</data>
|
||||
<data name="Type_AsType_Parameter_Error" xml:space="preserve">
|
||||
<value>{Type}. AsType parameter error, please pass in the correct entity type</value>
|
||||
</data>
|
||||
<data name="Type_Cannot_Access_Constructor" xml:space="preserve">
|
||||
<value>The {thatFullName} type cannot access the constructor</value>
|
||||
</data>
|
||||
<data name="Type_Error_Name" xml:space="preserve">
|
||||
<value>{name} type error</value>
|
||||
</data>
|
||||
<data name="TypeAsType_NotSupport_Object" xml:space="preserve">
|
||||
<value>{Type}. AsType parameter does not support specifying as object</value>
|
||||
</data>
|
||||
<data name="TypeError_CannotUse_IncludeMany" xml:space="preserve">
|
||||
<value>Type {typeofFullName} error, IncludeMany cannot be used</value>
|
||||
</data>
|
||||
<data name="Unable_Parse_Expression" xml:space="preserve">
|
||||
<value>Unable to parse expression: {exp}</value>
|
||||
</data>
|
||||
<data name="Unable_Parse_ExpressionMethod" xml:space="preserve">
|
||||
<value>Unable to parse expression method {exp3tmpCallMethodName}</value>
|
||||
</data>
|
||||
<data name="Use_InsertDict_Method" xml:space="preserve">
|
||||
<value>Please use fsql. InsertDict (dict) method inserts dictionary data</value>
|
||||
</data>
|
||||
</root>
|
498
FreeSql/Properties/CoreStrings.resx
Normal file
498
FreeSql/Properties/CoreStrings.resx
Normal file
@ -0,0 +1,498 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: 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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<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:sequence>
|
||||
<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="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AsTable_PropertyName_FormatError" xml:space="preserve">
|
||||
<value>[Table(AsTable = "{asTable}")] 特性值格式错误</value>
|
||||
</data>
|
||||
<data name="AsTable_PropertyName_NotDateTime" xml:space="preserve">
|
||||
<value>[Table(AsTable = xx)] 设置的属性名 {atmGroupsValue} 不是 DateTime 类型</value>
|
||||
</data>
|
||||
<data name="Available_Failed_Get_Resource" xml:space="preserve">
|
||||
<value>{name}: Failed to get resource {statistics}</value>
|
||||
</data>
|
||||
<data name="Available_Thrown_Exception" xml:space="preserve">
|
||||
<value>{name}: An exception needs to be thrown</value>
|
||||
</data>
|
||||
<data name="Bad_Expression_Format" xml:space="preserve">
|
||||
<value>错误的表达式格式 {column}</value>
|
||||
</data>
|
||||
<data name="Before_Chunk_Cannot_Use_Select" xml:space="preserve">
|
||||
<value>Chunk 功能之前不可使用 Select</value>
|
||||
</data>
|
||||
<data name="Begin_Transaction_Then_ForUpdate" xml:space="preserve">
|
||||
<value>安全起见,请务必在事务开启之后,再使用 ForUpdate</value>
|
||||
</data>
|
||||
<data name="Cannot_Be_NULL" xml:space="preserve">
|
||||
<value>不能为 null</value>
|
||||
</data>
|
||||
<data name="Cannot_Be_NULL_Name" xml:space="preserve">
|
||||
<value>{name} 不能为 null</value>
|
||||
</data>
|
||||
<data name="Cannot_Match_Property" xml:space="preserve">
|
||||
<value>无法匹配 {property}</value>
|
||||
</data>
|
||||
<data name="Cannot_Resolve_ExpressionTree" xml:space="preserve">
|
||||
<value>{property} 无法解析为表达式树</value>
|
||||
</data>
|
||||
<data name="Check_UseConnectionString" xml:space="preserve">
|
||||
<value>参数 masterConnectionString 不可为空,请检查 UseConnectionString</value>
|
||||
</data>
|
||||
<data name="Commit" xml:space="preserve">
|
||||
<value>提交</value>
|
||||
</data>
|
||||
<data name="Connection_Failed_Switch_Servers" xml:space="preserve">
|
||||
<value>连接失败,准备切换其他可用服务器</value>
|
||||
</data>
|
||||
<data name="Custom_Expression_ParsingError" xml:space="preserve">
|
||||
<value>自定义表达式解析错误:类型 {exp3MethodDeclaringType} 需要定义 static ThreadLocal<ExpressionCallContext> 字段、字段、字段(重要三次提醒)</value>
|
||||
</data>
|
||||
<data name="Custom_Reflection_IsNotNull" xml:space="preserve">
|
||||
<value>Custom { 反射信息 }不能为空,格式:{ 静态方法名 }{ 空格 }{ 反射信息 }</value>
|
||||
</data>
|
||||
<data name="Custom_StaticMethodName_IsNotNull" xml:space="preserve">
|
||||
<value>Custom { 静态方法名 }不能为空,格式:{ 静态方法名 }{ 空格 }{ 反射信息 }</value>
|
||||
</data>
|
||||
<data name="Custom_StaticMethodName_NotSet_DynamicFilterCustom" xml:space="preserve">
|
||||
<value>Custom 对应的{{ 静态方法名 }}:{fiValueCustomArray} 未设置 [DynamicFilterCustomAttribute] 特性</value>
|
||||
</data>
|
||||
<data name="CustomFieldSeparatedBySpaces" xml:space="preserve">
|
||||
<value>Custom 要求 Field 应该空格分割,并且长度为 2,格式:{ 静态方法名 }{ 空格 }{ 反射信息 }</value>
|
||||
</data>
|
||||
<data name="DataType_AsType_Inconsistent" xml:space="preserve">
|
||||
<value>操作的数据类型({dataDisplayCsharp}) 与 AsType({tableTypeDisplayCsharp}) 不一致,请检查。</value>
|
||||
</data>
|
||||
<data name="DateRange_Comma_Separateda_By2Char" xml:space="preserve">
|
||||
<value>DateRange 要求 Value 应该逗号分割,并且长度为 2</value>
|
||||
</data>
|
||||
<data name="DateRange_DateFormat_yyyy" xml:space="preserve">
|
||||
<value>DateRange 要求 Value[1] 格式必须为:yyyy、yyyy-MM、yyyy-MM-dd、yyyy-MM-dd HH、yyyy、yyyy-MM-dd HH:mm</value>
|
||||
</data>
|
||||
<data name="DbUpdateVersionException_RowLevelOptimisticLock" xml:space="preserve">
|
||||
<value>记录可能不存在,或者【行级乐观锁】版本过旧,更新数量{sourceCount},影响的行数{affrows}。</value>
|
||||
</data>
|
||||
<data name="Different_Number_SlaveConnectionString_SlaveWeights" xml:space="preserve">
|
||||
<value>SlaveConnectionString 数量与 SlaveWeights 不相同</value>
|
||||
</data>
|
||||
<data name="Duplicate_ColumnAttribute" xml:space="preserve">
|
||||
<value>ColumnAttribute.Name {colattrName} 重复存在,请检查(注意:不区分大小写)</value>
|
||||
</data>
|
||||
<data name="Duplicate_PropertyName" xml:space="preserve">
|
||||
<value>属性名 {pName} 重复存在,请检查(注意:不区分大小写)</value>
|
||||
</data>
|
||||
<data name="Entity_Must_Primary_Key" xml:space="preserve">
|
||||
<value>{function} 功能要求实体类 {tableCsName} 必须有主键</value>
|
||||
</data>
|
||||
<data name="Entity_MySQL_VersionsBelow8_NotSupport_Multiple_PrimaryKeys" xml:space="preserve">
|
||||
<value>{tbTypeFullName} 是父子关系,但是 MySql 8.0 以下版本中不支持组合多主键</value>
|
||||
</data>
|
||||
<data name="Entity_NotParentChild_Relationship" xml:space="preserve">
|
||||
<value>{tbTypeFullName} 不是父子关系,无法使用该功能</value>
|
||||
</data>
|
||||
<data name="EspeciallySubquery_Cannot_Parsing" xml:space="preserve">
|
||||
<value>这个特别的子查询不能解析</value>
|
||||
</data>
|
||||
<data name="Expression_Error_Use_ParameterExpression" xml:space="preserve">
|
||||
<value>表达式错误,它的顶级对象不是 ParameterExpression:{exp}</value>
|
||||
</data>
|
||||
<data name="Expression_Error_Use_Successive_MemberAccess_Type" xml:space="preserve">
|
||||
<value>表达式错误,它不是连续的 MemberAccess 类型:{exp}</value>
|
||||
</data>
|
||||
<data name="ExpressionTree_Convert_Type_Error" xml:space="preserve">
|
||||
<value>ExpressionTree 转换类型错误,值({value}),类型({valueTypeFullName}),目标类型({typeFullName}),{exMessage}</value>
|
||||
</data>
|
||||
<data name="Failed_SubTable_FieldValue" xml:space="preserve">
|
||||
<value>未能解析分表字段值 {sqlWhere}</value>
|
||||
</data>
|
||||
<data name="Functions_AsTable_NotImplemented" xml:space="preserve">
|
||||
<value>AsTable 未实现的功能 {asTable}</value>
|
||||
</data>
|
||||
<data name="GBase_NotSupport_OtherThanCommas" xml:space="preserve">
|
||||
<value>GBase 暂时不支持逗号以外的分割符</value>
|
||||
</data>
|
||||
<data name="Generated_Same_SubTable" xml:space="preserve">
|
||||
<value>tableName:{tableName} 生成了相同的分表名</value>
|
||||
</data>
|
||||
<data name="GetPrimarys_ParameterError_IsNotDictKey " xml:space="preserve">
|
||||
<value>GetPrimarys 传递的参数 "{primary}" 不正确,它不属于字典数据的键名</value>
|
||||
</data>
|
||||
<data name="Has_Specified_Cannot_Specified_Second" xml:space="preserve">
|
||||
<value>已经指定了 {first},不能再指定 {second}</value>
|
||||
</data>
|
||||
<data name="Ignored_Check_Confirm_PublicGetSet" xml:space="preserve">
|
||||
<value>{tb2DbName}.{mp2MemberName} 被忽略,请检查 IsIgnore 设置,确认 get/set 为 public</value>
|
||||
</data>
|
||||
<data name="Include_ParameterType_Error" xml:space="preserve">
|
||||
<value>Include 参数类型错误</value>
|
||||
</data>
|
||||
<data name="Include_ParameterType_Error_Use_IncludeMany" xml:space="preserve">
|
||||
<value>Include 参数类型错误,集合属性请使用 IncludeMany</value>
|
||||
</data>
|
||||
<data name="Include_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
||||
<value>Include 参数类型错误,表达式类型应该为 MemberAccess</value>
|
||||
</data>
|
||||
<data name="IncludeMany_NotValid_Navigation" xml:space="preserve">
|
||||
<value>IncludeMany 类型 {tbTypeDisplayCsharp} 的属性 {collMemMemberName} 不是有效的导航属性,提示:IsIgnore = true 不会成为导航属性</value>
|
||||
</data>
|
||||
<data name="IncludeMany_ParameterError_OnlyUseOneParameter" xml:space="preserve">
|
||||
<value>IncludeMany {navigateSelector} 参数错误,Select 只可以使用一个参数的方法,正确格式:.Select(t =>new TNavigate {{}})</value>
|
||||
</data>
|
||||
<data name="IncludeMany_ParameterError_Select_ReturnConsistentType" xml:space="preserve">
|
||||
<value>IncludeMany {navigateSelector} 参数错误,Select lambda参数返回值必须和 {collMemElementType} 类型一致</value>
|
||||
</data>
|
||||
<data name="IncludeMany_ParameterType_Error_Use_MemberAccess" xml:space="preserve">
|
||||
<value>IncludeMany 参数1 类型错误,表达式类型应该为 MemberAccess</value>
|
||||
</data>
|
||||
<data name="IncludeMany_ParameterTypeError" xml:space="preserve">
|
||||
<value>IncludeMany {navigateSelector} 参数类型错误,正确格式: a.collections.Take(1).Where(c =>c.aid == a.id).Select(a=> new TNavigate{{}})</value>
|
||||
</data>
|
||||
<data name="InsertInto_No_Property_Selected" xml:space="preserve">
|
||||
<value>ISelect.InsertInto() 未选择属性: {displayCsharp}</value>
|
||||
</data>
|
||||
<data name="InsertInto_TypeError" xml:space="preserve">
|
||||
<value>ISelect.InsertInto() 类型错误: {displayCsharp}</value>
|
||||
</data>
|
||||
<data name="InsertOrUpdate_Must_Primary_Key" xml:space="preserve">
|
||||
<value>InsertOrUpdate 功能执行 merge into 要求实体类 {CsName} 必须有主键</value>
|
||||
</data>
|
||||
<data name="InsertOrUpdate_NotSuport_Generic_UseEntity" xml:space="preserve">
|
||||
<value>InsertOrUpdate<>的泛型参数 不支持 {typeofT1},请传递您的实体类</value>
|
||||
</data>
|
||||
<data name="Install_FreeSql_Extensions_LazyLoading" xml:space="preserve">
|
||||
<value>【延时加载】功能需要安装 FreeSql.Extensions.LazyLoading.dll,可前往 nuget 下载</value>
|
||||
</data>
|
||||
<data name="LazyLoading_CompilationError" xml:space="preserve">
|
||||
<value>【延时加载】{trytbTypeName} 编译错误:{exMessage}\r\n\r\n{cscode}</value>
|
||||
</data>
|
||||
<data name="LazyLoading_EntityMustDeclarePublic" xml:space="preserve">
|
||||
<value>【延时加载】实体类型 {trytbTypeName} 必须声明为 public</value>
|
||||
</data>
|
||||
<data name="ManyToMany_AsSelect_NotSupport_Sum_Avg_etc" xml:space="preserve">
|
||||
<value>ManyToMany 导航属性 .AsSelect() 暂时不可用于 Sum/Avg/Max/Min/First/ToOne/ToList 方法</value>
|
||||
</data>
|
||||
<data name="ManyToMany_NotFound_CorrespondingField" xml:space="preserve">
|
||||
<value>【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 在 {tbmidCsName} 中没有找到对应的字段,如:{midTypePropsTrytbName}{findtrytbPkCsName}、{midTypePropsTrytbName}_{findtrytbPkCsName}</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_EntityMissing_PrimaryKey" xml:space="preserve">
|
||||
<value>【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,实体类型 {tbrefTypeName} 缺少主键标识,[Column(IsPrimary = true)]</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_EntityMustHas_NavigateCollection" xml:space="preserve">
|
||||
<value>【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,实体类型 {tbrefTypeName} 必须存在对应的 [Navigate(ManyToMany = x)] 集合属性</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_InconsistentType" xml:space="preserve">
|
||||
<value>【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,{tbmidCsName}.{trycolCsName} 和 {trytbCsName}.{trytbPrimarysCsName} 类型不一致</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_IntermediateClass_ErrorMessage" xml:space="preserve">
|
||||
<value>【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,中间类 {tbmidCsName}.{midTypePropsTrytbName} 错误:{exMessage}</value>
|
||||
</data>
|
||||
<data name="ManyToMany_ParsingError_IntermediateClass_NotManyToOne_OneToOne" xml:space="preserve">
|
||||
<value>【ManyToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,中间类 {tbmidCsName}.{midTypePropsTrytbName} 导航属性不是【ManyToOne】或【OneToOne】</value>
|
||||
</data>
|
||||
<data name="Mapping_Exception_HasNo_SamePropertyName" xml:space="preserve">
|
||||
<value>映射异常:{name} 没有一个属性名相同</value>
|
||||
</data>
|
||||
<data name="MasterPool_IsNull_UseTransaction" xml:space="preserve">
|
||||
<value>Ado.MasterPool 值为 null,该操作无法自启用事务,请显式传递【事务对象】解决</value>
|
||||
</data>
|
||||
<data name="Missing_FreeSqlProvider_Package" xml:space="preserve">
|
||||
<value>缺少 FreeSql 数据库实现包:FreeSql.Provider.{Provider}.dll,可前往 nuget 下载</value>
|
||||
</data>
|
||||
<data name="Missing_FreeSqlProvider_Package_Reason" xml:space="preserve">
|
||||
<value>缺少 FreeSql 数据库实现包:{dll},可前往 nuget 下载;如果存在 {dll} 依然报错(原因是环境问题导致反射不到类型),请在 UseConnectionString/UseConnectionFactory 第三个参数手工传入 typeof({providerType})</value>
|
||||
</data>
|
||||
<data name="Navigation_Bind_Number_Different" xml:space="preserve">
|
||||
<value>导航属性 {trytbTypeName}.{pnvName} 特性 [Navigate] Bind 数目({bindColumnsCount}) 与 外部主键数目({tbrefPrimarysLength}) 不相同</value>
|
||||
</data>
|
||||
<data name="Navigation_Missing_AsSelect" xml:space="preserve">
|
||||
<value>{tb2DbName}.{mp2MemberName} 导航属性集合忘了 .AsSelect() 吗?如果在 ToList(a => a.{mp2MemberName}) 中使用,请移步参考 IncludeMany 文档。</value>
|
||||
</data>
|
||||
<data name="Navigation_Missing_SetProperty" xml:space="preserve">
|
||||
<value>【导航属性】{trytbTypeDisplayCsharp}.{pName} 缺少 set 属性</value>
|
||||
</data>
|
||||
<data name="Navigation_NotFound_CorrespondingField" xml:space="preserve">
|
||||
<value>导航属性 {trytbTypeName}.{pnvName} 没有找到对应的字段,如:{pnvName}{findtbrefPkCsName}、{pnvName}_{findtbrefPkCsName}。或者使用 [Navigate] 特性指定关系映射。</value>
|
||||
</data>
|
||||
<data name="Navigation_ParsingError_EntityMissingPrimaryKey" xml:space="preserve">
|
||||
<value>导航属性 {trytbTypeName}.{pnvName} 解析错误,实体类型 {trytcTypeName} 缺少主键标识,[Column(IsPrimary = true)]</value>
|
||||
</data>
|
||||
<data name="Navigation_ParsingError_InconsistentType" xml:space="preserve">
|
||||
<value>导航属性 {trytbTypeName}.{pnvName} 解析错误,{trytbCsName}.{trycolCsName} 和 {tbrefCsName}.{tbrefPrimarysCsName} 类型不一致</value>
|
||||
</data>
|
||||
<data name="Navigation_ParsingError_NotFound_Property" xml:space="preserve">
|
||||
<value>导航属性 {trytbTypeName}.{pnvName} 特性 [Navigate] 解析错误,在 {tbrefTypeName} 未找到属性:{bi}</value>
|
||||
</data>
|
||||
<data name="NoPrimaryKey_UseSetDto" xml:space="preserve">
|
||||
<value>{tableTypeDisplayCsharp} 没有定义主键,无法使用 SetSource,请尝试 SetDto</value>
|
||||
</data>
|
||||
<data name="NoProperty_Defined" xml:space="preserve">
|
||||
<value> 没有定义属性 </value>
|
||||
</data>
|
||||
<data name="Not_Implemented" xml:space="preserve">
|
||||
<value>未实现</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Expression" xml:space="preserve">
|
||||
<value>未实现函数表达式 {exp} 解析</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Expression_ParameterUseConstant" xml:space="preserve">
|
||||
<value>未实现函数表达式 {exp} 解析,参数 {expArguments} 必须为常量</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Expression_UseAsSelect" xml:space="preserve">
|
||||
<value>未实现函数表达式 {exp} 解析,如果正在操作导航属性集合,请使用 .AsSelect().{exp3MethodName}({exp3ArgumentsCount})</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_MemberAcess_Constant" xml:space="preserve">
|
||||
<value>未实现 MemberAccess 下的 Constant</value>
|
||||
</data>
|
||||
<data name="Not_Implemented_Name" xml:space="preserve">
|
||||
<value>未实现 {name}</value>
|
||||
</data>
|
||||
<data name="Not_Support" xml:space="preserve">
|
||||
<value>不支持</value>
|
||||
</data>
|
||||
<data name="Not_Support_OrderByRandom" xml:space="preserve">
|
||||
<value>{dataType} 不支持 OrderByRandom 随机排序</value>
|
||||
</data>
|
||||
<data name="Not_Valid_Navigation_Property" xml:space="preserve">
|
||||
<value>{property} 不是有效的导航属性</value>
|
||||
</data>
|
||||
<data name="NotFound_Column" xml:space="preserve">
|
||||
<value>{dbName} 找不到列 {memberName}</value>
|
||||
</data>
|
||||
<data name="NotFound_CsName_Column" xml:space="preserve">
|
||||
<value>找不到 {CsName} 对应的列</value>
|
||||
</data>
|
||||
<data name="NotFound_Property" xml:space="preserve">
|
||||
<value>找不到属性:{memberName}</value>
|
||||
</data>
|
||||
<data name="NotFound_PropertyName" xml:space="preserve">
|
||||
<value>找不到属性名 {proto}</value>
|
||||
</data>
|
||||
<data name="NotFound_Reflection" xml:space="preserve">
|
||||
<value>Custom 找不到对应的{{ 反射信息 }}:{fiValueCustomArray}</value>
|
||||
</data>
|
||||
<data name="NotFound_Static_MethodName" xml:space="preserve">
|
||||
<value>Custom 找不到对应的{{ 静态方法名 }}:{fiValueCustomArray}</value>
|
||||
</data>
|
||||
<data name="NotFound_Table_Property_AsTable" xml:space="preserve">
|
||||
<value>[Table(AsTable = xx)] 设置的属性名 {atmGroupsValue} 不存在</value>
|
||||
</data>
|
||||
<data name="NotSpecified_UseConnectionString_UseConnectionFactory" xml:space="preserve">
|
||||
<value>未指定 UseConnectionString 或者 UseConnectionFactory</value>
|
||||
</data>
|
||||
<data name="ObjectPool_Get_Timeout" xml:space="preserve">
|
||||
<value>【{policyName}】ObjectPool.{GetName}() timeout {totalSeconds} seconds, see: https://github.com/dotnetcore/FreeSql/discussions/1081</value>
|
||||
</data>
|
||||
<data name="ObjectPool_GetAsync_Queue_Long" xml:space="preserve">
|
||||
<value>【{policyName}】ObjectPool.GetAsync() The queue is too long. Policy.AsyncGetCapacity = {asyncGetCapacity}</value>
|
||||
</data>
|
||||
<data name="OneToMany_NotFound_CorrespondingField" xml:space="preserve">
|
||||
<value>【OneToMany】导航属性 {trytbTypeName}.{pnvName} 在 {tbrefCsName} 中没有找到对应的字段,如:{findtrytb}{findtrytbPkCsName}、{findtrytb}_{findtrytbPkCsName}</value>
|
||||
</data>
|
||||
<data name="OneToMany_ParsingError_InconsistentType" xml:space="preserve">
|
||||
<value>【OneToMany】导航属性 {trytbTypeName}.{pnvName} 解析错误,{trytbCsName}.{trytbPrimarysCsName} 和 {tbrefCsName}.{trycolCsName} 类型不一致</value>
|
||||
</data>
|
||||
<data name="OneToMany_UseNavigate" xml:space="preserve">
|
||||
<value>、{refpropName}{findtrytbPkCsName}、{refpropName}_{findtrytbPkCsName}。或者使用 [Navigate] 特性指定关系映射。</value>
|
||||
</data>
|
||||
<data name="Parameter_Field_NotSpecified" xml:space="preserve">
|
||||
<value>参数 field 未指定</value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_Collection" xml:space="preserve">
|
||||
<value>{property} 参数错误,它不是集合属性,必须为 IList<T> 或者 ICollection<T></value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_Navigation" xml:space="preserve">
|
||||
<value>{property} 参数错误,它不是有效的导航属性</value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_PropertyName" xml:space="preserve">
|
||||
<value>{where} 参数错误,{keyval} 不是有效的属性名,在实体类 {reftbTypeDisplayCsharp} 无法找到</value>
|
||||
</data>
|
||||
<data name="ParameterError_NotValid_UseCommas" xml:space="preserve">
|
||||
<value>{property} 参数错误,格式 "TopicId=Id,多组使用逗号连接" </value>
|
||||
</data>
|
||||
<data name="Parsing_Failed" xml:space="preserve">
|
||||
<value>解析失败 {callExpMethodName} {message}</value>
|
||||
</data>
|
||||
<data name="Policy_ObjectPool_Dispose" xml:space="preserve">
|
||||
<value>【{policyName}】The ObjectPool has been disposed, see: https://github.com/dotnetcore/FreeSql/discussions/1079</value>
|
||||
</data>
|
||||
<data name="Policy_Status_NotAvailable" xml:space="preserve">
|
||||
<value>【{policyName}】状态不可用,等待后台检查程序恢复方可使用。{UnavailableExceptionMessage}</value>
|
||||
</data>
|
||||
<data name="Properties_AsRowLock_Must_Numeric_Byte" xml:space="preserve">
|
||||
<value>属性{trytbVersionColumnCsName} 被标注为行锁(乐观锁)(IsVersion),但其必须为数字类型 或者 byte[],并且不可为 Nullable</value>
|
||||
</data>
|
||||
<data name="Properties_Cannot_Null" xml:space="preserve">
|
||||
<value>properties 参数不能为空</value>
|
||||
</data>
|
||||
<data name="Property_Cannot_Find" xml:space="preserve">
|
||||
<value>{property} 属性名无法找到</value>
|
||||
</data>
|
||||
<data name="Range_Comma_Separateda_By2Char" xml:space="preserve">
|
||||
<value>Range 要求 Value 应该逗号分割,并且长度为 2</value>
|
||||
</data>
|
||||
<data name="RollBack" xml:space="preserve">
|
||||
<value>回滚</value>
|
||||
</data>
|
||||
<data name="RunTimeError_Reflection_IncludeMany" xml:space="preserve">
|
||||
<value>运行时错误,反射获取 IncludeMany 方法失败</value>
|
||||
</data>
|
||||
<data name="Set_Column_IsNullable_False" xml:space="preserve">
|
||||
<value>{qoteSql} is NULL,除非设置特性 [Column(IsNullable = false)]</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_CannotLessThen" xml:space="preserve">
|
||||
<value>分表字段值 "{dt}" 不能小于 "{beginTime} "</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_IsNotNull" xml:space="preserve">
|
||||
<value>分表字段值不能为 null</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_NotConvertDateTime" xml:space="preserve">
|
||||
<value>分表字段值 "{columnValue}" 不能转化成 DateTime</value>
|
||||
</data>
|
||||
<data name="SubTableFieldValue_NotMatchTable" xml:space="preserve">
|
||||
<value>分表字段值 "{dt}" 未匹配到分表名</value>
|
||||
</data>
|
||||
<data name="T2_Type_Error" xml:space="preserve">
|
||||
<value>T2 类型错误</value>
|
||||
</data>
|
||||
<data name="TableName_Format_Error" xml:space="preserve">
|
||||
<value>tableName 格式错误,示例:“log_{yyyyMMdd}”</value>
|
||||
</data>
|
||||
<data name="Type_AsType_Parameter_Error" xml:space="preserve">
|
||||
<value>{Type}.AsType 参数错误,请传入正确的实体类型</value>
|
||||
</data>
|
||||
<data name="Type_Cannot_Access_Constructor" xml:space="preserve">
|
||||
<value>{thatFullName} 类型无法访问构造函数</value>
|
||||
</data>
|
||||
<data name="Type_Error_Name" xml:space="preserve">
|
||||
<value>{name} 类型错误</value>
|
||||
</data>
|
||||
<data name="TypeAsType_NotSupport_Object" xml:space="preserve">
|
||||
<value>{Type}.AsType 参数不支持指定为 object</value>
|
||||
</data>
|
||||
<data name="TypeError_CannotUse_IncludeMany" xml:space="preserve">
|
||||
<value>类型 {typeofFullName} 错误,不能使用 IncludeMany</value>
|
||||
</data>
|
||||
<data name="Unable_Parse_Expression" xml:space="preserve">
|
||||
<value>无法解析表达式:{exp}</value>
|
||||
</data>
|
||||
<data name="Unable_Parse_ExpressionMethod" xml:space="preserve">
|
||||
<value>无法解析表达式方法 {exp3tmpCallMethodName}</value>
|
||||
</data>
|
||||
<data name="Use_InsertDict_Method" xml:space="preserve">
|
||||
<value>请使用 fsql.InsertDict(dict) 方法插入字典数据</value>
|
||||
</data>
|
||||
</root>
|
261
FreeSql/Properties/Resources.tt
Normal file
261
FreeSql/Properties/Resources.tt
Normal file
@ -0,0 +1,261 @@
|
||||
<#@ template hostspecific="true" #>
|
||||
<#@ assembly name="System.Core" #>
|
||||
<#@ assembly name="EnvDTE" #>
|
||||
<#@ assembly name="System.Windows.Forms" #>
|
||||
<#@ import namespace="System.Collections" #>
|
||||
<#@ import namespace="System.Collections.Generic" #>
|
||||
<#@ import namespace="System.ComponentModel.Design" #>
|
||||
<#@ import namespace="System.IO" #>
|
||||
<#@ import namespace="System.Linq" #>
|
||||
<#@ import namespace="System.Resources" #>
|
||||
<#@ import namespace="System.Text.RegularExpressions" #>
|
||||
<#@ import namespace="EnvDTE" #>
|
||||
<#@ import namespace="System.IO" #>
|
||||
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #>
|
||||
|
||||
<#
|
||||
var model = LoadResources();
|
||||
#>
|
||||
// <auto-generated />
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
<#
|
||||
if (!model.NoDiagnostics)
|
||||
{
|
||||
#>
|
||||
using System.Threading;
|
||||
<#
|
||||
}
|
||||
#>
|
||||
|
||||
namespace <#= model.Namespace #>
|
||||
{
|
||||
<#
|
||||
if (model.Namespace.EndsWith("Internal")
|
||||
|| model.AccessModifier == "internal")
|
||||
{
|
||||
#>
|
||||
/// <summary>
|
||||
/// This is an internal API that supports the FreeSql infrastructure and not subject to
|
||||
/// the same compatibility standards as public APIs. It may be changed or removed without notice in
|
||||
/// any release. You should only use it directly in your code with extreme caution and knowing that
|
||||
/// doing so can result in application failures when updating to a new FreeSql release.
|
||||
/// </summary>
|
||||
<#
|
||||
}
|
||||
else
|
||||
{
|
||||
#>
|
||||
/// <summary>
|
||||
/// <para>
|
||||
/// String resources used in FreeSql exceptions, etc.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// These strings are exposed publicly for use by database providers and extensions.
|
||||
/// It is unusual for application code to need these strings.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
<#
|
||||
}
|
||||
#>
|
||||
<#= model.AccessModifier #> static class <#= model.Class #>
|
||||
{
|
||||
private static readonly ResourceManager _resourceManager
|
||||
= new ResourceManager("<#= model.ResourceName #>", typeof(<#= model.Class #>).Assembly);
|
||||
<#
|
||||
foreach (var resource in model.Resources)
|
||||
{
|
||||
#>
|
||||
|
||||
/// <summary>
|
||||
<#
|
||||
foreach (var line in Lines(resource.Value))
|
||||
{
|
||||
#>
|
||||
/// <#= Xml(line) #>
|
||||
<#
|
||||
}
|
||||
#>
|
||||
/// </summary>
|
||||
<#
|
||||
if (resource.Obsolete)
|
||||
{
|
||||
#>
|
||||
[Obsolete]
|
||||
<#
|
||||
}
|
||||
|
||||
if (resource.Parameters.Any())
|
||||
{
|
||||
#>
|
||||
public static string <#= resource.Name #>(<#= List("object ", resource.Parameters.Select(e => e.ParamString)) #>)
|
||||
=> string.Format(
|
||||
GetString("<#= resource.Name #>", <#= List(resource.Parameters.Select(e => e.NameOfString)) #>),
|
||||
<#= List(resource.Parameters.Select(e => e.ParamString)) #>);
|
||||
<#
|
||||
}
|
||||
else
|
||||
{
|
||||
#>
|
||||
public static string <#= resource.Name #>
|
||||
=> GetString("<#= resource.Name #>");
|
||||
<#
|
||||
}
|
||||
}
|
||||
#>
|
||||
|
||||
private static string GetString(string name, params string[] formatterNames)
|
||||
{
|
||||
var value = _resourceManager.GetString(name);
|
||||
for (var i = 0; i < formatterNames.Length; i++)
|
||||
{
|
||||
value = value.Replace("{" + formatterNames[i] + "}", "{" + i + "}");
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<#+
|
||||
ResourceFile LoadResources()
|
||||
{
|
||||
var result = new ResourceFile();
|
||||
|
||||
if (Session.ContainsKey("AccessModifier"))
|
||||
{
|
||||
result.AccessModifier = (string)Session["AccessModifier"];
|
||||
};
|
||||
|
||||
var services = (IServiceProvider)Host;
|
||||
var dte = (DTE)services.GetCOMService(typeof(DTE));
|
||||
if (!Session.TryGetValue("NoDiagnostics", out var noDiagnostics))
|
||||
{
|
||||
noDiagnostics = false;
|
||||
}
|
||||
|
||||
result.NoDiagnostics = (bool)noDiagnostics;
|
||||
|
||||
var resourceFile = (string)Session["ResourceFile"];
|
||||
if (!Path.IsPathRooted(resourceFile))
|
||||
{
|
||||
resourceFile = Host.ResolvePath(resourceFile);
|
||||
}
|
||||
|
||||
var resourceProjectItem = dte.Solution.FindProjectItem(resourceFile);
|
||||
var templateProjectItem = dte.Solution.FindProjectItem(Host.TemplateFile);
|
||||
var project = templateProjectItem.ContainingProject;
|
||||
var rootNamespace = (string)project.Properties.Item("RootNamespace").Value;
|
||||
var resourceDir = Path.GetDirectoryName(resourceFile);
|
||||
var projectDir = (string)project.Properties.Item("FullPath").Value;
|
||||
var resourceNamespace = rootNamespace + "." + resourceDir.Substring(projectDir.Length)
|
||||
.Replace(Path.DirectorySeparatorChar, '.');
|
||||
|
||||
result.Namespace = (string)resourceProjectItem.Properties.Item("CustomToolNamespace")?.Value;
|
||||
if (string.IsNullOrEmpty(result.Namespace))
|
||||
{
|
||||
result.Namespace = resourceNamespace;
|
||||
}
|
||||
|
||||
result.Class = Path.GetFileNameWithoutExtension(resourceFile);
|
||||
|
||||
|
||||
result.ResourceName = resourceNamespace + "." + result.Class;
|
||||
|
||||
List<ResXDataNode> sortedResources;
|
||||
using (var reader = new ResXResourceReader(resourceFile))
|
||||
{
|
||||
reader.UseResXDataNodes = true;
|
||||
sortedResources = Enumerable.ToList(
|
||||
from DictionaryEntry r in reader
|
||||
orderby r.Key
|
||||
select (ResXDataNode)r.Value);
|
||||
|
||||
result.Resources = sortedResources
|
||||
.Select(r => new Resource(r))
|
||||
.ToList();
|
||||
}
|
||||
|
||||
using (var writer = new ResXResourceWriter(resourceFile))
|
||||
{
|
||||
foreach (var node in sortedResources)
|
||||
writer.AddResource(node);
|
||||
|
||||
writer.Generate();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
IEnumerable<string> Lines(string value)
|
||||
=> value.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
|
||||
|
||||
string Xml(string value)
|
||||
=> value.Replace("<", "<").Replace(">", ">");
|
||||
|
||||
string List(IEnumerable<string> items)
|
||||
=> List(null, items);
|
||||
|
||||
string List(string prefix, IEnumerable<string> items, string suffix = null)
|
||||
=> string.Join(", ", items.Select(i => prefix + i + suffix));
|
||||
|
||||
class ResourceFile
|
||||
{
|
||||
public string Namespace { get; set; }
|
||||
public string AccessModifier { get; set; } = "public";
|
||||
public string Class { get; set; }
|
||||
public string ResourceName { get; set; }
|
||||
public IEnumerable<Resource> Resources { get; set; }
|
||||
public bool NoDiagnostics { get; set; }
|
||||
}
|
||||
|
||||
class Resource
|
||||
{
|
||||
public Resource(ResXDataNode node)
|
||||
{
|
||||
Name = node.Name;
|
||||
Value = (string)node.GetValue((ITypeResolutionService)null);
|
||||
var parameters = Regex.Matches(Value, @"\{(\w+)\}")
|
||||
.Cast<Match>()
|
||||
.Select(m => m.Groups[1].Value)
|
||||
.Distinct()
|
||||
.Select(n => ("nameof(" + n + ")", n))
|
||||
.ToList();
|
||||
|
||||
foreach (var parameter in parameters.ToList())
|
||||
{
|
||||
var rawString = parameter.Item2;
|
||||
var underscoreIndex = rawString.IndexOf('_');
|
||||
if (underscoreIndex > 0)
|
||||
{
|
||||
var newIndex = int.Parse(rawString.Substring(0, underscoreIndex));
|
||||
parameters[newIndex] = ("\"" + rawString + "\"", rawString.Substring(underscoreIndex + 1));
|
||||
}
|
||||
}
|
||||
|
||||
Parameters = parameters;
|
||||
|
||||
var eventInfo = node.Comment.Split(' ');
|
||||
var argumentsRead = 0;
|
||||
if (eventInfo.FirstOrDefault() == "Obsolete")
|
||||
{
|
||||
Obsolete = true;
|
||||
argumentsRead++;
|
||||
}
|
||||
|
||||
Level = eventInfo.Skip(argumentsRead++).FirstOrDefault() ?? "BadLevel";
|
||||
EventId = eventInfo.Skip(argumentsRead++).FirstOrDefault() ?? "BadEventId";
|
||||
Types = eventInfo.Skip(argumentsRead++).ToList();
|
||||
}
|
||||
|
||||
public string Name { get; }
|
||||
public string Value { get; }
|
||||
public string EventId { get; }
|
||||
public string Level { get; }
|
||||
public bool Obsolete { get; }
|
||||
public IEnumerable<(string NameOfString, string ParamString)> Parameters { get; }
|
||||
public IEnumerable<string> Types { get; }
|
||||
}
|
||||
#>
|
Reference in New Issue
Block a user