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

问题描述 投票:0回答:1

[花了很多精力在用Npgsql和EntityFramework6.Npgsql配置我的MVC5 vb.net应用后,我可以使用Visual Studio 2017中的Entity Data Model Wizard很好地连接到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.1EntityFramework6.Npgsql v6.3.0

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

entity-framework entity-framework-6 linq-to-entities database-connection npgsql
1个回答
0
投票
我知道了这个问题。我之所以使用4.5.1框架,是因为我认为我有一个依赖关系,因此我无法升级到4.5.2。我转到程序包管理器控制台并运行以下命令:Update-Package -ProjectName myProjectName -reinstall这样,我发现我有一个需要的程序包,但由于需要4.5.2框架(或更高版本)而无法加载。我将应用程序的框架更改为4.5.2,并发出了上述“程序包管理器”命令,该程序执行无误。我运行了该应用程序,并且linq语句不再引发异常。
© www.soinside.com 2019 - 2024. All rights reserved.