rdu*_*ont 1 .net sqldatareader
我有以下情况:
using (SqlConnection conexao = new SqlConnection(ConnectionString))
{
SqlCommand comando = new SqlCommand(query, conexao);
comando.Parameters.AddWithValue("id", idUsuario);
conexao.Open();
SqlDataReader reader = comando.ExecuteReader(CommandBehavior.SingleRow);
if (reader.Read())
{
Hydrate(out entity, reader);
}
}
Run Code Online (Sandbox Code Playgroud)
那么,如果reader包含有效结果HasRows == true,那么reader.Read()应该返回true,对吗?
嗯,它不适合我.我不知道发生了什么,因为Hydrate(out entity, reader);线路永远不会被击中.
有人可以帮我理解这个吗?
谢谢!
实际上,如果不是最后一行,SqlDataReader.Read会返回true.
您的行为指定"SingleRow",因此读者将读者与第一行对齐,并返回false,表示"此行之后没有行".
请参阅此链接以下文档:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read.aspx
"如果有更多行,则为true;否则为false."
然而,有趣的是,他们的例子似乎会忽略基于该句子的最后一行......
| 归档时间: |
|
| 查看次数: |
10055 次 |
| 最近记录: |