Vic*_*ana 6 .net c# sql-server entity-framework entity-framework-6
我们使用实体框架从现有数据库中读取。这是我们代码的简化版本。
using (my context context = new mycontext())
{
if(context.Database.Connection.State == System.Data.ConnectionState.Closed)
{
_logger.Info(" Opening the connection to the database");
context.Database.Connection.Open();
}
context.Configuration.LazyLoadingEnabled = false;
IQueryable<mymodel> people;
people = context.People.OrderBy(x => x.Firstname);
_lstContacts = people.ToList();
if (context.Database.Connection.State != System.Data.ConnectionState.Closed)
{
context.Database.Connection.Close();
context.Database.Connection.Dispose();
_logger.Info(" Connection to the database Closed");
}
}
Run Code Online (Sandbox Code Playgroud)
它可以100%地起作用,但是...在我们的UAT环境中,我们可以看到与Microsoft SQL Server的连接失败,并显示以下错误:
用户“我的用户”的登录失败。原因:无法打开显式指定的数据库“空”。客户我的IP。
对我们来说,这些是虚连接,因为在我们看到SQL Server中的错误时,我们的代码没有执行。最初,我们没有明确关闭并打开连接,我们只是添加了它以控制EF打开和关闭连接的时间,但是并没有解决问题。
我们的连接字符串使用以下格式:
<add name="MYCN" connectionString="metadata=res://*/CVs.Cvs.csdl|res://*/CVs.Cvs.ssdl|res://*/CVs.Cvs.msl;provider=System.Data.SqlClient;provider connection string="data source=myserver\;initial catalog=mydatabase;Integrated Security=;User ID=myuser;Password=XXXXXXX;MultipleActiveResultSets=True;App=EntityFramework"/>
Run Code Online (Sandbox Code Playgroud)
如您所见,我们在连接字符串中指定数据库,而我们的用户只能访问我们的数据库,因此当EF在连接字符串中不包含数据库时,我们会理解该错误,但是我们不知道为什么它是尝试执行这些连接。我们知道连接来自我们的应用程序,因为我们是唯一使用该特定用户的连接,IP是服务器的IP,并且因为SQL Server中的日志告诉我们该应用程序是“ EntityFramewrok”
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |