为了账号安全,请及时绑定邮箱和手机立即绑定

将多个 tvp 值添加到数据表时出错

将多个 tvp 值添加到数据表时出错

C#
尚方宝剑之说 2022-11-21 16:49:49
我尝试使用表值参数将包含多列的列表添加到 MSSQL 数据库。我收到此错误:'无法将 '...Models.OptionValue' 类型的对象转换为类型 'System.IConvertible'。无法将 <...OptionValue> 存储在 OptionID 列中。预期类型是 Int32。InnerException:InvalidCastException:无法将“...Models.OptionValue”类型的对象转换为类型“System.IConvertible”。SQL Tvp 表:CREATE TYPE [dbo].[OptionValueList] AS TABLE(    [OptionID] [int] NULL,    [ValueID] [int] NULL)班级:public class OptionValue {        public int OptionID { get; set; }        public int ValueID { get; set; }} public class OptionListVM {        public int ProductID { get; set; }        public List<OptionValue> OptionValueLst { get; set; } }这是我尝试添加列以便将列表传递给存储过程的地方:    DataTable tvp = new DataTable();    tvp.Columns.Add(new DataColumn("OptionID", typeof(int)));    tvp.Columns.Add(new DataColumn("ValueID", typeof(int)));    foreach (var x in o.OptionValueLst)                       tvp.Rows.Add(x); -- error line我实现了 IConvertable 接口,但它不起作用。我怎样才能解决这个问题 ?
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

DataTable tvp = new DataTable();

tvp.Columns.Add(new DataColumn("OptionID", typeof(int)));

tvp.Columns.Add(new DataColumn("ValueID", typeof(int)));


foreach (<OptionValue>x in o.OptionValueLst) {

DataRow dr = tvp.NewRow();

dr("OptionID") = x.OptionID;

dr("ValueID") = x.ValueID; 

tvp.Rows.Add(dr); 

}


查看完整回答
反对 回复 2022-11-21
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信