下面是对象和.txt文件的示例类,我使用filehelpers创建此类,然后使用FileHelpers读取.txt文件,并将此文件转换为这些对象,并将它们放入List中。
.txt文件:
1122233
4455566
示例类:
[FixedLengthRecord(FixedMode.AllowLessChars)]
public class Example
{
[FieldFixedLength(2)]
public string first;
[FieldFixedLength(3)]
public string second;
[FieldFixedLength(2)]
public string third;
}
用filehelpers读取这个给我2个Example对象。第一个Example.first值为'11'等。 我通过将List转换为DataTable并使用SqlBulkCopy将数据推送到数据库中。一切顺利。
数据库中的表只包含3列(varchar)和列名;第一,第二和第三。
当我尝试从数据库中取回数据并将其映射回List时出现问题,我使用以下代码(使用Dapper):
IDbConnection connection = new SqlConnection(connectionString);
var rows = connection.Query<Example>("select * from examplesTable");
foreach (Example e in rows)
{
examples.Add(e); //List<Example> examples
}
这将返回正确的行数,但是如果我尝试从对象中获取数据,则它包含空数据。我无法弄清楚我做错了什么。
答案 0 :(得分:1)
不可能只编写foreach (Example e in rows)
,您应该为Example创建构造函数,它将根据每行的数据创建一个Example对象。它看起来有点像
foreach (DaraRow r in rows)
{
Example e = new Examaple(r["First"],r["Second"]);
examples.Add(e); //List<Example> examples
}
答案 1 :(得分:1)
我会检查您是否在SQL批量插入之前正确加载了数据,然后您没有从批量插入中获得任何错误。
SQL Management Studio中的表是否具有正确的数据?
如果你有正确的数据只是作为一个数据表读取,看看什么带回来,因为它将是对象值而不是特定类型。