【发布时间】:2012-04-24 19:55:23
【问题描述】:
我一直在使用代码优先的实体框架。我在 web.config 中定义了一个连接,其名称与我的 DbContext 的类名匹配(在本例中为“MyDbContext”)。
当数据库存在时,EF 使用此连接没有问题。
但是,如果我删除数据库(强制 EF 重新创建它),EF 会在本地 Sql Express 服务器上创建数据库。
如果我在 DbContext 类构造函数中指定完整的连接字符串,例如
public class ReykerSCPContext : DbContext
{
public ReykerSCPContext() :
base("Server=tcp:MyDBSErver.database.windows.net,1433;Database=MyDB;User ID=#######;Password=#######;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True;PersistSecurityInfo=True;") { }
}
然后在选择的服务器上正确创建数据库。太好了!
谁能告诉我这是否是正确的行为,因为我正在猛烈抨击我的大脑。我希望这一切都可以从 web.config 中运行,所以我不需要重新构建并记住更改代码中的设置等。
【问题讨论】:
-
我相信这是正常的,EF默认转到本地sql实例。我将不得不启动我的一个项目来检查。您可以在 Julie Lerman 上进行谷歌搜索,并查看她的博客/视频,了解 EF 代码的首次行为方式以及如何更改它。
-
我无法重现此行为。数据库是否存在,是否正在使用配置中的 connectionString。您是否尝试过(作为一种解决方法)将连接字符串名称传递给 DbContext ctor(例如 base("name={Your connection string}")?如果不尝试是否有效。另外,您使用的是什么版本的 EF?跨度>
-
您的构造函数 MyDbContext 的名称与您的类名 ReykerSCPContext 不同,是这个问题吗?
-
很好看。我的实际代码是正确的。我会更新问题。
-
根据您的描述,似乎存在一些错误配置,并且应用程序可能始终连接到默认的本地主机服务器。你能从你的 web.config 或 app.config 中发布相关的 connectionString sn-p 吗?
标签: sql entity-framework-4 ef-code-first