我的一个使用实体框架5的项目非常奇怪。实体框架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管理工作室在远程执行查询时也没有问题。
哟确定没有涉及一些无限的超时? –
我很确定没有理由超时。 我刚刚写了一个简单的测试应用程序在不同的解决方案。它使用相同的数据库和相同的connectiontring/configsection,并且测试应用程序可以在远程机器上工作。 – Erik