How to pass table value parameters to stored procedure from .net code

后端 未结 5 2233
难免孤独
难免孤独 2020-11-22 00:35

I have a SQL Server 2005 database. In a few procedures I have table parameters that I pass to a stored proc as an nvarchar (separated by commas) and internally

5条回答
  •  深忆病人
    2020-11-22 00:46

    Use this code to create suitable parameter from your type:

    private SqlParameter GenerateTypedParameter(string name, object typedParameter)
    {
        DataTable dt = new DataTable();
    
        var properties = typedParameter.GetType().GetProperties().ToList();
        properties.ForEach(p =>
        {
            dt.Columns.Add(p.Name, Nullable.GetUnderlyingType(p.PropertyType) ?? p.PropertyType);
        });
        var row = dt.NewRow();
        properties.ForEach(p => { row[p.Name] = (p.GetValue(typedParameter) ?? DBNull.Value); });
        dt.Rows.Add(row);
    
        return new SqlParameter
        {
            Direction = ParameterDirection.Input,
            ParameterName = name,
            Value = dt,
            SqlDbType = SqlDbType.Structured
        };
    }
    

提交回复
热议问题