Dot Net Core中的SqlCommandBuilder.DeriveParameters [英] SqlCommandBuilder.DeriveParameters in Dot Net Core

查看:62
本文介绍了Dot Net Core中的SqlCommandBuilder.DeriveParameters的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在搬运< g class =" gr_ gr_35 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace"数据-GR-ID =" 35 QUOT; id =" 35">旧的< / g> class lib to dot net core。无法使用" SqlCommandBuilder.DeriveParameters(this.Command);"。$
是否有< g class =" gr_ gr_103 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del"数据-GR-ID =" 103" id =" 103">解决< / g>为此在Dot Net< g class =" gr_ gr_136 gr-alert gr_gramm
gr_inline_cards gr_run_anim Style multiReplace"数据-GR-ID =" 136" id =" 136"> Core?< / g>

 public CommandBuilder AssignParameters(object p)
{
SqlCommandBuilder.DeriveParameters (this.Command);
如果(p == null)返回此;
var objType = p.GetType();
var props = TypeExtensions.GetProperties(objType).Cast< PropertyInfo>()。ToList();

foreach(this.Command.Parameters中的SqlParameter参数)
{
if(parameter.ParameterName ==" @ RETURN_VALUE" || parameter.Direction == ParameterDirection.Output )
继续;
var paramName = parameter.ParameterName.Remove(0,1);
var prop = props.FirstOrDefault(obj => paramName.Equals(obj.Name,StringComparison.OrdinalIgnoreCase));
if(prop!= null)
{
var propType = prop.PropertyType;
var propValue = prop.GetValue(p);
if(parameter.DbType == DbType.Int32)
{
var intValue = propValue.ToInt();
if(intValue == 0)
{
parameter.Value = DBNull.Value;
}
else
{
parameter.Value = intValue;
}
}
else if(propType == typeof(DateTime))
{
var propVal = propValue.ToDateTime();
parameter.Value = propVal == DateTime.MinValue? null:propValue;
}
else
{
parameter.Value =(propValue == null || String.IsNullOrEmpty(propValue.ToString()))? DBNull.Value:propValue;
}
}
其他
{
parameter.Value = DBNull.Value;
}
}

解决方案

Hello Pradeep714,


对于.NET Core问题,请选择在https://github.com/dotnet/corefx或http:// forums上发帖.dotnetfoundation.org /


您的具体问题已在此处提出:


https://github.com/dotnet/corefx/issues/ 5501


我看到以下内容"这是在
<中添加的span style ="color:#0066cc">#20883,
它将在2.1.0中发布。 "


祝你好运,


Barry




I was porting <g class="gr_ gr_35 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" data-gr-id="35" id="35">a old</g> class lib to dot net core. unable to use "SqlCommandBuilder.DeriveParameters(this.Command);".
Is there any <g class="gr_ gr_103 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del" data-gr-id="103" id="103">work around</g> for this in Dot Net <g class="gr_ gr_136 gr-alert gr_gramm gr_inline_cards gr_run_anim Style multiReplace" data-gr-id="136" id="136">Core ?</g>

 public CommandBuilder AssignParameters(object p)
  {
    SqlCommandBuilder.DeriveParameters(this.Command);   
    if (p == null) return this;
    var objType = p.GetType();    
    var props = TypeExtensions.GetProperties(objType).Cast<PropertyInfo>().ToList();        
    
    foreach (SqlParameter parameter in this.Command.Parameters)
    {
        if (parameter.ParameterName == "@RETURN_VALUE" || parameter.Direction == ParameterDirection.Output)
            continue;
        var paramName = parameter.ParameterName.Remove(0, 1);
        var prop = props.FirstOrDefault(obj => paramName.Equals(obj.Name, StringComparison.OrdinalIgnoreCase));
        if (prop != null)
        {
            var propType = prop.PropertyType;
            var propValue = prop.GetValue(p);
            if (parameter.DbType == DbType.Int32)
            {
                var intValue = propValue.ToInt();
                if (intValue == 0)
                {
                    parameter.Value = DBNull.Value;
                }
                else
                {
                    parameter.Value = intValue;
                }
            }
            else if (propType == typeof(DateTime))
            {
                var propVal = propValue.ToDateTime();
                parameter.Value = propVal == DateTime.MinValue ? null : propValue;
            }                    
            else
            {
                parameter.Value = (propValue == null || String.IsNullOrEmpty(propValue.ToString())) ? DBNull.Value : propValue;
            }
        }
        else
        {
            parameter.Value = DBNull.Value;
        }
    }

解决方案

Hello Pradeep714,

For .NET Core issue please choose to post on either https://github.com/dotnet/corefx or http://forums.dotnetfoundation.org/

Your specific question has already been asked here:

https://github.com/dotnet/corefx/issues/5501

And I see the following "This was added in #20883 ,It will ship in 2.1.0. "

Best regards,

Barry


这篇关于Dot Net Core中的SqlCommandBuilder.DeriveParameters的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆