【发布时间】:2016-01-05 20:36:00
【问题描述】:
我正在开发一个实体框架 (EF) 项目,该项目作为我的 Visual Studio 2013 解决方案中另一个项目的补充类库。我最初在我的客户端开发系统上有一个模拟本地数据库,并从那里构建了模式和其他实用程序。我正在使用的数据适配器使用 SQL 身份验证。
在获得满足我要求的经过验证的稳定构建后,我将 EF 项目合并到解决方案中。使用本地数据库,一切正常。然后,我通过以下方式将 EF 数据库重新定位到远程 SQL 服务器:
- 将我的数据适配器更新到远程服务器
- 成功测试我的数据适配器的连接
- 使用正确的连接字符串更新启动项目和 EF 项目中的
App.Config文件 - 在远程服务器上运行 EF 生成的 T-SQL 脚本
- 通过观察数据库视图并查看我的新表来验证 T-SQL 脚本是否有效
完成后,我重新运行了解决方案。 EF 在来自框架的第一次调用时抛出异常:
EntityFramework.SqlServer.dll 中出现“System.Data.Entity.Core.EntityException”类型的未处理异常
附加信息:底层提供程序在打开时失败。
当我检查内部异常时,我发现:
登录失败。登录来自不受信任的域,不能用于 Windows 身份验证。
这个异常让我感到困惑,因为如果你还记得我文章开头的内容,我正在使用 SQL 身份验证。
我目前没有使用任何与 ASP.NET 相关的东西,我的测试平台只是从一个在迁移前没有问题的控制台应用程序中执行。
我想说这是一个管理/环境问题,而不是代码,因为我在本地没有问题,而且我的 T-SQL 脚本似乎在远程服务器上运行良好,而且我与它有连接。不幸的是,我的 SQL 服务器技能与我的编码能力相差甚远,我无法“证明”它。所以我发现自己不知所措。
stackoverflow 的优秀人员的任何帮助将不胜感激!
附加:
每德鲁乔丹:
上下文构造器 -
public DatabaseContext(): base("name=DatabaseContext") {}
连接字符串-
connectionString="metadata=res:///Database.csdl|res:///Database.ssdl|res://*/Database.msl;provider=System.Data.SqlClient ;provider connection string="data source=mycompany.com\SQLEXPRESS;initial catalog=sandbox2_db;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"
【问题讨论】:
-
上下文的构造函数是什么样的?你的连接字符串呢?
-
我同意 DrewJordan 的评论;您需要通过您的应用程序进行调试,以查看传递给连接字符串上下文的内容。我相信您的连接字符串可能会在某处被覆盖;从问题来看,它看起来不像是管理员问题
-
我在 dbContext 实例爆炸之前从它的实例中提取了连接字符串,与 App.Config 中的相同。问题仍然存在
标签: c# sql-server tsql visual-studio-2012 entity-framework-6