Ian*_*ton 20 asp.net-mvc entity-framework-4 ef-code-first
我从web.config中删除了连接字符串,Entity Framework仍然连接到数据库!连接字符串在哪里设置?这是一个问题,因为我需要将我的网站的实时版本指向实时数据库.
小智 16
这是我在尝试连接到现有数据库时遇到的"约定优于配置"理念的问题(就像你正在做的那样).
如果您的DbContext类(例如Northwind)位于命名空间(例如MvcProject)中,由于某种原因,EF将不会将该类的名称与web.config中名为"Northwind"(或"MvcProject.Northwind")的连接字符串匹配,然后它将创建一个默认为本地SQLEXPRESS实例的连接字符串,其中包含一个名为"MvcProject.Northwind"的数据库.这将是一个空数据库.而且你会试图弄清楚为什么你没有得到任何数据,直到你意识到你没有连接到正确的数据库.
我解决这个问题的方式(不是优雅,但它是我发现修复它的最快方式):在DbContext类中添加一个构造函数,该类使用web.config中的连接字符串的名称调用base - 例如
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() : base("Northwind") {}
}
}
Run Code Online (Sandbox Code Playgroud)
希望有人帮助那里;-)
小智 9
你需要这样的东西:
<configuration>
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=YourDatabaseName"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
或者,如果您的数据库所在的是App_Data文件夹:
<configuration>
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|YourDatabaseFilename.mdf;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
替换MyContext为扩展的类的名称DbContext.
| 归档时间: |
|
| 查看次数: |
39504 次 |
| 最近记录: |