将linq用于Npgsql EntityFramework6模型时抛出SocketException

经过大量的努力,使我的MVC5 vb.net应用程序配置了Npgsql和EntityFramework6.Npgsql,我可以使用Visual Studio 2017中的“实体数据模型向导”很好地连接到postgres数据库,并与PostgreSQL数据库的数据提供者建立新的连接,输入我的数据库服务器详细信息并测试连接(成功)。我也可以双击EDMX文件并按预期添加表等。这是我的第一个与postgreSQL数据库对话的项目(通常使用MS SQL Server)。直到遇到遇到是试图查询数据库的linq语句的代码,一切似乎都很好。我的Linq声明是:

    Dim l_ListOfPwrCycleCrashEvents As List(Of pwr_cycle_crash_events) = (From item In m_AnalyticsEntities.pwr_cycle_crash_events Where item.serialnumber = "0123445678" Select item).ToList

我在try / catch块中有该语句,但是Visual Studio仍然报告以下内容:

  

引发的异常:System.dll中的“ System.Net.Sockets.SocketException”   信息:无法完成套接字的无阻塞操作   立即发生

我似乎无法弄清楚为什么该语句失败。我可以对在应用程序中也配置的另一个EntityFramework(MS SQL Server)使用类似的语句。

包含linq语句的完整方法:

    Public ReadOnly Property iCountOfPwrCycleCrashEvents(
                ByVal a_sSerialNumber As String
            ) As Integer Implements IAnalytics.iCountOfPwrCycleCrashEvents
                Get
                    Try
                        Dim l_ListOfPwrCycleCrashEvents As List(Of pwr_cycle_crash_events) = (From item In m_AnalyticsEntities.pwr_cycle_crash_events
                                                                                              Where item.serialnumber = a_sSerialNumber
                                                                                              Select item).ToList
                        If (l_ListOfPwrCycleCrashEvents Isnot Nothing) Then Return l_ListOfPwrCycleCrashEvents.Count
                    Catch l_Exception2 As System.Net.Sockets.SocketException
                        Dim askjfhakjh As Integer = 7
                    Catch l_Exception As Exception
                        Dim kjhadkjh As Integer = 1
                    End Try
                    Return 0
                End Get
            End Property

我在面向 .NET Framework 4.5.1 的应用程序中使用了 Npgsql v4.1.1 EntityFramework6.Npgsql v6.3.0

我似乎无法弄清楚linq语句为什么抛出此异常或如何解决该问题。您有什么建议?

wcnm2132 回答:将linq用于Npgsql EntityFramework6模型时抛出SocketException

我发现了问题。我之所以使用4.5.1框架,是因为我认为我有一个依赖关系,因此我无法升级到4.5.2。我转到程序包管理器控制台并运行以下命令: Update-Package -ProjectName myProjectName -reinstall 这样,我发现我有一个需要的程序包,但由于需要4.5.2框架(或更高版本)而无法加载。我将应用程序的框架更改为4.5.2,并发出了上述“程序包管理器”命令,该程序执行无误。我运行了该应用程序,并且linq语句不再引发异常。

本文链接:https://www.f2er.com/3114610.html

大家都在问