public void AddTVPString(string name, IEnumerable <string> values) { var metadata = new[] { new SqlMetaData("one", SqlDbType.VarChar, 256) }; var data = new TVPData { Data = values, MetaData = metadata, Name = name, Type = "stringlist_tbltype", SetData = (rec, s) => rec.SetString(0, (string)s), }; _tvpParams.Add(name, data); }
private void AddTVPParam(IDbCommand command, string name, TVPData value) { var dataList = new List <SqlDataRecord>(); if (value.Data != null) { foreach (var d in value.Data) { var rec = new SqlDataRecord(value.MetaData); value.SetData(rec, d); //note: this only works for a one-column TVP dataList.Add(rec); } } if (dataList.Count == 0) //gotta make the value null if there isn't any data. { dataList = null; } var p = ((SqlCommand)command).Parameters.Add(name, SqlDbType.Structured); p.Direction = ParameterDirection.Input; p.TypeName = value.Type; p.Value = dataList; }