我正在努力寻找创建基本“模型优先”实体框架示例的最简单方法。但是,我正在努力实际生成数据库,特别是针对数据库运行SQL。
这就是说它无法找到数据库名称“Database1”。
“问题”是SQL服务器没有连接Database1。我100%肯定Visual Studio在创建新数据库时将数据库附加到SQLExpress(步骤2)。这似乎不再是这种情况(即使是VS2010的测试版也是如此)。有人能证实吗?或告诉我如何实现这一目标?
有没有办法可以修改TSQL脚本以使用未附加的数据库。即文件。
我知道我可以使用SQL Management Studio或sqlcmd来附加数据库,但我希望避免使用解决方案,因为我希望看到使用visual studio的最干净的方法。
提前致谢。
答案 0 :(得分:2)
我发现一直工作的方法(至少在VS 2010和SQL Server(2008 | 2008 R2)Express中)是:
;Database=DATABASENAME;
”。可能并非所有步骤都是必需的(特别是不按照上面显示的确切顺序),因为我没有真正优化过程 - 如果它有效,请不要修复它。 :-)一个关键步骤似乎是#8,即重新启动Visual Studio,因为否则Server Explorer无法重新打开数据库。
答案 1 :(得分:1)
感谢HighTechRider,为服务器资源管理器中的DataConnection创建的连接字符串确实具有“AttachDBFilename”参数。
但是这个想法让我尝试别的东西。
按照上面列出的相同步骤,我在登录sqlexpress步骤时做了一些不同的事情。这一次,在Connect to Database Engine
屏幕中,我点击了显示更多选项按钮,然后转到“其他连接参数”选项卡。
在这里我添加了AttachDBFilename=c:\src\mydatabasehome\Database1.mdf;database=Database1;
。注意我使用的是完整路径,而不是AttachDbFilename=|DataDirectory|\Database1.mdf
然后在没有问题的情况下对数据库执行了我的SQL。
然后我回到服务器资源管理器并继续扩展我的数据库连接,以便我可以看到我的新表,但是连接失败了。经过一段时间的放屁之后,无论出于何种原因我都解决了这个问题,当我使用“连接到数据库引擎”屏幕连接到SQLExpress实例时,我在AttachDBFilename中指定的数据库文件实际上建立了永久连接。因此,先前的连接字符串(使用AttachDBFilename参数)不再有效,因为此数据库已经附加。
所以我删除了那个连接并直接创建了一个新连接到SQLServer,其中有一个名为“database1”的数据库供我选择。
现在我认为一切都很顺利。
这是一个奇怪的过程,对我来说当然是意料之外的,所以如果有人想解释发生了什么,我一定会很感激。现在我有办法(即使有点奇怪)做我想做的事,更好的解决方案赞赏。
希望这有助于某人。
答案 2 :(得分:0)
你的连接字符串是什么样的?您是否尝试在连接字符串中添加AttachDbFilename
?
答案 3 :(得分:0)
“附加连接参数”选项卡在哪里?我只有“高级”选项卡,并且不清楚添加附件声明的位置。