entity-framework - 将 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 语句会引发此异常或如何解决该问题。你有什么建议?
解决方案
我弄清楚了这个问题。我使用的是 4.5.1 框架,因为我认为我的依赖项不允许我迁移到 4.5.2。我转到包管理器控制台并运行以下命令:
Update-Package -ProjectName myProjectName -reinstall
通过这样做,我发现我有一个需要但无法加载的包,因为它需要 4.5.2 框架(或更高版本)。我将应用程序的框架更改为 4.5.2 并发出上述包管理器命令,它执行没有错误。我运行了应用程序,linq 语句不再引发异常。
推荐阅读
- sql - 如何在 Oracle 的同一列值中对不同模式使用 REPLACE 进行更新?
- angular - AngularFirebase2,Ionic 3:通过firebase返回数据不完全工作
- c# - 如何在不引发异常的情况下使用 Selenium 'Until' 函数?
- java - Intellij IDEA 中的蓝点(圆圈)是什么意思?
- intellij-idea - 如何在 IntelliJ 中创建保护块?
- ms-access - 为什么 DoCmd.SetParameter 'expression' 参数需要控件的名称,而不是值?
- php - Laravel 查询生成器 orderBy id 没有正确排序
- c++ - 带有通用格式说明符的 Printf
- python - 在python中从字符串列表转换为列表列表
- reactjs - 初始页面加载为空 - create-react-app