我已经从我的web.config中删除了连接字符串,实体框架仍然连接到数据库!在哪里设置连接字符串?这是一个问题,因为我需要使我的网站的实时版本指向实时数据库。
发布于 2011-06-19 08:34:14
这是我在尝试连接到现有数据库时发现的“约定重于配置”哲学的一个陷阱(就像您正在做的那样)。
如果您的DbContext类(例如Northwind)位于名称空间(例如MvcProject)中,由于某种原因,EF不会将类的名称与web.config中名为"Northwind“(或"MvcProject.Northwind")的连接字符串进行匹配,然后它只会创建一个默认到本地SQLEXPRESS实例的连接字符串,以及一个名为"MvcProject.Northwind”的数据库。这将是一个空数据库。在你意识到你没有连接到正确的数据库之前,你会试图弄清楚为什么你得不到任何数据。
我解决这个问题的方法(不是很优雅,但这是我找到的修复它的最快方法):向DbContext类添加一个构造函数,该构造函数使用web.config中的连接字符串的名称调用基类-例如
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() : base("Northwind") {}
}
}
希望这对外面的人有帮助;-)
发布于 2011-04-26 23:26:05
你需要这样的东西:
<configuration>
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=YourDatabaseName"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
或者,如果您的数据库位于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>
用扩展DbContext
的类名替换MyContext
。
发布于 2011-08-04 23:07:17
EF无法为我找到连接,但我在base()中使用了连接字符串:
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() :
base("Data Source=servername;Initial Catalog=database;User ID=yourID;Password=yourPass;Trusted_Connection=False;") {}
}
}
只是为了测试一下连接,它已经成功了。
https://stackoverflow.com/questions/5790325
复制相似问题