首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET ConnectionString AttachDbFilename=|DataDirectory|

ASP.NET ConnectionString AttachDbFilename=|DataDirectory|
EN

Stack Overflow用户
提问于 2013-03-10 16:36:31
回答 4查看 27.5K关注 0票数 5

以下是本教程的后续内容:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4我在web.config上遇到了这两个连接字符串的问题:

代码语言:javascript
复制
<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=(LocalDb)\v11.0;
                           Initial Catalog=aspnet-MvcMovie-users;
                           Integrated Security=SSPI;
                           AttachDBFilename=|DataDirectory|\aspnet-MvcMovie-users.mdf"
         providerName="System.Data.SqlClient" />

    <add name="MovieDBContext" 
         connectionString="Data Source=(LocalDB)\v11.0;
                           AttachDbFilename=|DataDirectory|\Movies.mdf;
                           Integrated Security=True" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

网站运行良好,但我弄不明白为什么第一个数据库创建在App_Data文件夹中,而第二个数据库创建在"C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA“中?!

注意:教程提到它应该在App_Data中&他们添加了一个屏幕截图来显示它确实在那里!

我一直在寻找答案,并陷入了SQL的复杂性(我认为用户实例可能是解决方案),但找不到答案:|

任何想法都是非常受欢迎的。提前谢谢。

问候

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-19 18:15:34

经过研究/测试,结果如下所示:

VS将查看DataContext的类名,并查看您是否提供了与类名相同的连接字符串;例如:

代码语言:javascript
复制
public class MovieDataContext : DbContext

代码语言:javascript
复制
<connectionStrings><add name="MovieDataContext" ...

如果它设法找到匹配的连接字符串,它将根据您在相应数据字符串中指定的条件创建数据库(要将数据库添加到App_Data,请将数据库的路径设置为|数据目录|,如问题中提到的两个连接字符串所示);如果名称不匹配或您没有提供任何连接字符串,则VS将回退到默认设置,并将在默认位置/设置数据(通常为C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\)中创建数据库。

注意:“集成安全性”设置和“初始目录”都不会对此起任何作用(我能够在App_Data中使用集成安全性=真实和集成安全性= SSPI和有/没有初始目录创建数据库)。

希望这能有所帮助。感谢所有参与的人。

票数 15
EN

Stack Overflow用户

发布于 2013-03-13 01:35:23

我也有同样的问题。我认为不同之处在于集成安全设置。我已经安装了SQLExpress,并使用MS SQL Server Management Studio在那里找到了我的电影数据库。

Difference between Integrated Security = True and Integrated Security = SSPI

票数 0
EN

Stack Overflow用户

发布于 2013-04-23 22:50:23

AMT给出的是完全正确的。在.mdf和.sdf文件中使用连接字符串是令人困惑的。

不过,我还有另一个建议,您可以更改应用程序查找名称与上下文类的类名匹配的连接字符串的默认设置,方法是覆盖DBContext的构造函数并提供参数nameOrConnectionString,如下所示

公共BlogsContext():base("name=EFBlogs") {}

然后,应用程序搜索名为EFBlogs的连接字符串,如果找不到连接字符串,则创建名为EFBlogs而不是BlogsContext的数据库

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15320428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档