use*_*073 6 sqlbulkcopy outofrangeexception fastmember
我遇到了这个错误 指定的参数超出了有效值的范围。参数名称:名称
当我几乎只是复制这里的示例时https://code.google.com/p/fast-member/
错误发生在 bcp.WriteToServer(reader) 上,一直在寻找其他信息,但我仍然不知道是什么导致了问题,并且示例非常简单...而且我什至不知道名为name的参数来自哪里。
我的实际代码如下
using (var bcp = new SqlBulkCopy(configvalue1))
using (var reader = ObjectReader.Create(DataToLoad, new string[]{"id","field1","field2","field3"}))
{
bcp.DestinationTableName = string.Format(DestinationTableFormat, DestinationDb, DestinationSchema, DestinationTable);
bcp.BatchSize = BatchSize ?? 10000;
bcp.WriteToServer(reader);
bcp.Close();
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
提前致谢
我相信我现在知道为什么会发生这种情况。
这是一个实际有效的示例,它使用一个具体类作为其 POCO,并创建该 POCO 的通用列表,如下所示。
IList<MyClass> ls = new List<MyClass>();
ls.Add(new MyClass { MyColumn1 = "The", MyColumn2 = "Test2" });
ls.Add(new MyClass { MyColumn1 = "Big", MyColumn2 = "Test2" });
ls.Add(new MyClass { MyColumn1 = "Ant", MyColumn2 = "Test2" });
DataTable dt = new DataTable();
using (var reader = ObjectReader.Create(ls))
{
dt.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)
这更像是您实时分配属性的匿名对象列表。
IList<object> ls2 = new List<object>();
ls2.Add(new { MyColumn1 = "The", MyColumn2="Test2" });
ls2.Add(new { MyColumn1 = "Big", MyColumn2="Test2" });
ls2.Add(new { MyColumn1 = "Ant", MyColumn2="Test2" });
DataTable dt2 = new DataTable();
using (var reader2 = ObjectReader.Create(ls2))
{
dt2.Load(reader2);
}
Run Code Online (Sandbox Code Playgroud)
这也不起作用
IList<dynamic> ls3 = new List<dynamic>();
ls3.Add(new { MyColumn1 = "The", MyColumn2 = "Test2" });
ls3.Add(new { MyColumn1 = "Big", MyColumn2 = "Test2" });
ls3.Add(new { MyColumn1 = "Ant", MyColumn2 = "Test2" });
DataTable dt3 = new DataTable();
using (var reader3 = ObjectReader.Create(ls3))
{
dt3.Load(reader3);
}
Run Code Online (Sandbox Code Playgroud)
即使 3 个列表在功能上相同,一个是 POCO 列表,一个是匿名对象列表,一个是动态成员列表,FASTMEMBER 无法在运行时正确读取 List 内匿名/动态对象的属性时间(例如:看不到 MyColumn1 和 MyColumn2),即使它在那里。
所以这更多的是一个限制
| 归档时间: |
|
| 查看次数: |
3669 次 |
| 最近记录: |