EF模型下使用Linq语句引发在提供程序连接上启动事务时出错

在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();将查询结果存储到内存中。

猜你喜欢

转载自blog.csdn.net/ID_Dexter/article/details/83011582