1. 程式人生 > >EF模型下使用Linq語句引發在提供程式連線上啟動事務時出錯

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();將查詢結果儲存到記憶體中。