在EF下使用linq查询时没有将结果转换成list直接使用,会占用数据库连接,使后续的数据库操作引发异常。
var hardwareMonitor = (from monitor in db.T_Monit_HardwareMonitor
group monitor by new
{
monitor.TerminalCode
} into g
select new
{
AddTime = (DateTime?)g.Max(p => p.AddTime),
g.Key.TerminalCode
});
后续执行db.T_Test.Add(Test);时会引发在提供程序连接上启动事务时出错
正确写法:var hardwareMonitor = (from monitor in db.T_Monit_HardwareMonitor
group monitor by new
{
monitor.TerminalCode
} into g
select new
{
AddTime = (DateTime?)g.Max(p => p.AddTime),
g.Key.TerminalCode
}).ToList();将查询结果存储到内存中。