Open niuniu007 opened 3 months ago
Translated 在base calss 中,我希望能够使用下面这样的方法公共使用 In the base class, I want to be able to use the following method for public use
protected virtual int Count(SqlBuilder sqlWhere)
{
using (var conn = _connection.GetIDbConnection())
{
var buiderQuery = sqlWhere.AddTemplate($" select count(1) from {getTableName()} /**where**/ ");
System.Console.WriteLine(buiderQuery.RawSql);
return conn.Query<int>(buiderQuery.RawSql, buiderQuery.Parameters).FirstOrDefault();
}
}
getTableName()用户获取当前对象对应的 tableName。我不知道在Dapper.Database 中是否有public方法获取到 tableName。 目前我是应用这样的方法获取: getTableName() user gets the tableName corresponding to the current object. I don't know if there is a public method in Dapper.Database to get the tableName. Currently I use this method to obtain:
` static MethodInfo sqlMapperExtensionsGetTableNameMethodInfo = null;
protected string getTableName() {
// Check if we've already set our custom table mapper to TableNameMapper. if (SqlMapperExtensions.TableNameMapper != null) return SqlMapperExtensions.TableNameMapper(typeof(T));
if (sqlMapperExtensionsGetTableNameMethodInfo == null) { string getTableNameMethodName = "TableInfoCache"; sqlMapperExtensionsGetTableNameMethodInfo = typeof(SqlMapperExtensions).GetMethod(getTableNameMethodName, System.Reflection.BindingFlags.IgnoreCase | BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
if (sqlMapperExtensionsGetTableNameMethodInfo == null)
throw new ArgumentOutOfRangeException($"Method '{getTableNameMethodName}' is not found in '{nameof(SqlMapperExtensions)}' class.");
} // If not, we can use Dapper default method "SqlMapperExtensions.GetTableName(Type type)" which is unfortunately private, that's why we have to call it via reflection. TableInfo tableInfo= sqlMapperExtensionsGetTableNameMethodInfo.Invoke(null, new object[] { typeof(T) }) as TableInfo; if (tableInfo != null) { return tableInfo.TableName; } throw new ArgumentOutOfRangeException($" not found in tableInfo class."); }
`
这很不方便 this is very inconvenient
getTableName()用户获取当前对象对应的 tableName。我不知道在Dapper.Database 中是否有public方法获取到 tableName。 目前我是应用这样的方法获取:
` static MethodInfo sqlMapperExtensionsGetTableNameMethodInfo = null;
protected string getTableName() {
}
`
这很不方便