我使用 Entity Framework 5 的项目之一表现得很奇怪。
如果我在与 SQL Server 2012 实例相同的机器上运行该应用程序,则一切正常。但是如果我在远程机器上运行应用程序,查询将不会被执行。也不例外。我可以让应用程序运行数小时而没有任何响应或活动。
我已检查该应用程序是否正在使用连接字符串。绝对可以。
配置:
<connectionStrings>
<add name="ConnectionName"
connectionString="metadata=res://*/MyContext.csdl|res://*/MyContext.ssdl|res://*/MyContext.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.0.11;initial catalog=MyDatabase;user id=MyUser;password=MyPassword;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
我的上下文的构造函数:
public partial class MyEntities : DbContext
{
public MyEntities (string connectionStringName) : base("name=" + connectionStringName)
{
}
}
即使是像这样的简单代码块也会复制行为:
MyEntities dbContext = new MyEntities("ConnectionName");
List<Product> products = dbContext.Products.ToList();
所以回顾一下。此代码在运行 SQL 实例的本地计算机上执行得很好。在远程机器上,这段代码什么都不做。该应用程序只是坐在那里而不会引发异常。不是超时,也不是连接异常。什么都没有。
SQL Server 实例可远程使用。我也检查过。使用相同数据库/实例的其他应用程序可以完美地远程运行(不使用实体框架,而是使用 OpenAccess)
此外,SQL 管理工作室远程执行查询也没有问题。