![](/img/trans.png)
[英]Can I remove a parameter from the Dapper DynamicParameters?
[英]Can a get DbType from Dapper DynamicParameters?
我需要遍歷 Dapper DynamicParameters
。 因此,我檢查此答案以獲取參數值。
foreach (var paramName in parameters.ParameterNames)
{
var value = ((SqlMapper.IParameterLookup)parameters)[paramName];
}
現在,我需要參數 DbType。 是否有可能獲得這些信息?
我不知道 Dapper 是否為此提供了更好的解決方案,但多虧了反思,沒有什么不可能!
var t = parameters.GetType().GetField("parameters", BindingFlags.NonPublic | BindingFlags.Instance);
if (t != null)
{
foreach (DictionaryEntry dictionaryEntry in (IDictionary)t.GetValue(parameters))
{
var dbType = (DbType)dictionaryEntry.Value?.GetType().GetProperty("DbType")?.GetValue(dictionaryEntry.Value);
}
}
你可以這樣做! 請檢查以下代碼:
private List<DbType> GetParameterType<T>()
{
var type = typeof(T);
var properties = type.GetProperties().Select(property => property.PropertyType.Name).ToList();
var dbTypes = new List<DbType>();
foreach (var prop in properties)
{
var tryParse = Enum.TryParse<DbType>(prop, out var result);
if (tryParse)
dbTypes.Add(result);
}
return dbTypes;
}
然后,這個調用很簡單: var dbTypes = GetParameterType<T>();
其中T
是你的對象
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.