如何将数据库中的行映射到对象列表中?
How to map rows from a database into a list of objects?
下面是对象和 .txt 文件的示例 class,我使用 filehelpers 创建这个 class,然后我使用 FileHelpers 读取一个 .txt 文件并将这个文件转换成这些对象,我把它们放在一个列表中。
.txt 文件:
1122233
4455566
示例class:
[FixedLengthRecord(FixedMode.AllowLessChars)]
public class Example
{
[FieldFixedLength(2)]
public string first;
[FieldFixedLength(3)]
public string second;
[FieldFixedLength(2)]
public string third;
}
用 filehelpers 阅读这个给了我 2 个对象 Example.The 第一个 Example.first 值是 '11' 等等。
我通过将 List 转换为 DataTable 并使用 SqlBulkCopy 将这些数据推送到数据库中。一切顺利。
数据库中的table只包含3列(varchar)和列名;第一,第二和第三。
当我尝试从数据库取回数据并将其映射回列表时出现问题,为此我使用了以下代码(使用 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
}
这 returns 正确的行数,但是如果我尝试从对象中获取数据,它包含空数据。我不知道我做错了什么。
不可能只写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
}
我会检查您是否在 SQL 批量插入之前正确加载了数据,然后您是否没有从批量插入中收到任何错误。
SQL管理工作室中的table是否有正确的数据?
如果您有正确的数据,请尝试将其作为数据读取 table 以查看返回的内容,因为这将是对象值而不是特定类型。
下面是对象和 .txt 文件的示例 class,我使用 filehelpers 创建这个 class,然后我使用 FileHelpers 读取一个 .txt 文件并将这个文件转换成这些对象,我把它们放在一个列表中。
.txt 文件:
1122233
4455566
示例class:
[FixedLengthRecord(FixedMode.AllowLessChars)]
public class Example
{
[FieldFixedLength(2)]
public string first;
[FieldFixedLength(3)]
public string second;
[FieldFixedLength(2)]
public string third;
}
用 filehelpers 阅读这个给了我 2 个对象 Example.The 第一个 Example.first 值是 '11' 等等。 我通过将 List 转换为 DataTable 并使用 SqlBulkCopy 将这些数据推送到数据库中。一切顺利。
数据库中的table只包含3列(varchar)和列名;第一,第二和第三。
当我尝试从数据库取回数据并将其映射回列表时出现问题,为此我使用了以下代码(使用 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
}
这 returns 正确的行数,但是如果我尝试从对象中获取数据,它包含空数据。我不知道我做错了什么。
不可能只写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
}
我会检查您是否在 SQL 批量插入之前正确加载了数据,然后您是否没有从批量插入中收到任何错误。
SQL管理工作室中的table是否有正确的数据?
如果您有正确的数据,请尝试将其作为数据读取 table 以查看返回的内容,因为这将是对象值而不是特定类型。