SQL ADO.NET 中的服务器查询仅返回一个结果
SQL Server query in ADO.NET only returning one result
我正在使用 ado.net 学习 asp.net mvc,我的存储库中有这个方法 class
public IEnumerable<int?> GetAllUniqueYears()
{
using (IDbConnection dbConnection = dbConnectionFactory.CreateConnection())
{
using (IDbCommand cmd = dbConnection.CreateCommand())
{
cmd.CommandText = "SELECT DISTINCT YEAR(DateAdded) As Year FROM GeoCounters";
cmd.CommandTimeout = 1000;
using (IDataReader reader = cmd.ExecuteReader())
{
if (!reader.Read())
{
yield return null;
}
else
{
yield return (int)reader["Year"];
}
}
}
}
}
当我加载我的视图时它只有一个结果,但是当我 运行 在 SQL Server Management Studio 中查询时有 4 个结果
控制器动作
public ActionResult Index()
{
HomeIndexViewModel model = new HomeIndexViewModel()
{
GeoCounterDefinitions = geodefrepo.GetAll()
.Select((x,y) => new SelectListItem
{
Text = x.Id + " " + x.FriendlyDesc,
Value = (y + 1).ToString()
}),
Years = geocounterrepo.GetAllUniqueYears()
.Select(x => new SelectListItem
{
Text = x.ToString(),
Value = x.ToString()
})
};
return View(model);
}
你需要一个 while 循环。
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
yield return (int)reader["Year"];
}
}
我正在使用 ado.net 学习 asp.net mvc,我的存储库中有这个方法 class
public IEnumerable<int?> GetAllUniqueYears()
{
using (IDbConnection dbConnection = dbConnectionFactory.CreateConnection())
{
using (IDbCommand cmd = dbConnection.CreateCommand())
{
cmd.CommandText = "SELECT DISTINCT YEAR(DateAdded) As Year FROM GeoCounters";
cmd.CommandTimeout = 1000;
using (IDataReader reader = cmd.ExecuteReader())
{
if (!reader.Read())
{
yield return null;
}
else
{
yield return (int)reader["Year"];
}
}
}
}
}
当我加载我的视图时它只有一个结果,但是当我 运行 在 SQL Server Management Studio 中查询时有 4 个结果
控制器动作
public ActionResult Index()
{
HomeIndexViewModel model = new HomeIndexViewModel()
{
GeoCounterDefinitions = geodefrepo.GetAll()
.Select((x,y) => new SelectListItem
{
Text = x.Id + " " + x.FriendlyDesc,
Value = (y + 1).ToString()
}),
Years = geocounterrepo.GetAllUniqueYears()
.Select(x => new SelectListItem
{
Text = x.ToString(),
Value = x.ToString()
})
};
return View(model);
}
你需要一个 while 循环。
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
yield return (int)reader["Year"];
}
}