我已经从我的web.config中删除了连接字符串,实体框架仍然连接到数据库!连接字符串在哪里设置?这是一个问题,因为我需要将我的网站的实时版本指向实时数据库。EntityFramework - 连接字符串在哪里?
回答
右键单击您的Entity Framework模式(edmx文件)> goto Properties。你会在那里看到连接字符串。
如果您的实体模型在一个单独的项目中,那么它必须在它自己的设置文件中。
我没有得到一个edmx文件,因为我使用Code First。我已经搜索了'connectionString',并且它不会出现在我的解决方案的其他地方! – 2011-04-26 12:47:38
约定>配置,对吧?
默认情况下,EF Code fist将在您本地的SQL Express实例中创建一个数据库。
是的,我认为这可能是这样的。那么如何让它在web.config中使用连接字符串,因为它似乎忽略了它? – 2011-04-26 13:54:24
web.config中的连接字符串名称与DbContext类的名称相同吗?即如果你有 'public class MyContext:DbContext' 那么你的连接字符串需要命名为MyContext – 2011-04-30 15:22:21
如果您正在使用DbContext的codefirst aproach,您可以在web.config中放置一个名称与您的上下文类名称匹配的连接字符串,它将工作得很好。
似乎并不适合我。我添加了一个连接字符串,其中一些垃圾已添加到“数据源”值,并且它一直保持正常工作... – 2011-04-26 14:52:30
它应该只是一个sql连接字符串,名称attribut应该与您的上下文名称完全匹配 – 2011-04-26 15:06:46
查看App.Config。它也会存储在那里。
你需要这样的事:
<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>
替换MyContext
与你的类扩展DbContext
的名称。
我想我已经完成了。我已将“服务器”值设置为IP地址,并将连接字符串的名称设置为派生上下文类的名称,但它应该只是忽略它! – 2011-04-26 15:42:08
这应该被标记为答案 – reaz 2017-07-17 22:08:59
这里有一个我发现的“常规优化配置”哲学,当涉及到试图连接到现有数据库(就像你在做什么)。
如果您的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") {}
}
}
希望帮助别人那里;-)
这一个解决了我的问题。谢谢 – fabriciorissetto 2014-03-22 21:58:52
官方文档说你应该使用: base(“name = Northwind”) 我发现这是它的唯一工作方式。如果你测试“Forthwind”,你会发现它不会抛出异常,但是“name = Forthwind”会。 – Richard 2014-08-13 12:50:52
我认为这是我的问题,但仍然可以指导我与我的问题http://stackoverflow.com/questions/42475840/entityframework-keeps-referring-to-a-copy-of-my-actual-database – Samra 2017-02-27 01:48:01
的EF couldn't找到我的连接,但是我用的连接字符串中的基础():
namespace MvcProject
{
public class Northwind : DbContext
{
public Northwind() :
base("Data Source=servername;Initial Catalog=database;User ID=yourID;Password=yourPass;Trusted_Connection=False;") {}
}
}
刚测试连接和它的工作。
是的,它可以正常工作,但将连接字符串放入代码中被认为是不好的做法,例如,如果要在生产服务器中部署应用程序,则需要更改代码中的连接字符串,重新构建解决方案并再次发布。 – 2017-02-02 15:37:57
我面临同样的问题,并简单地改变我的连接字符串名称建议在web.config文件作为上下文db的名称,一切顺利。
- 1. 我的连接字符串在哪里?
- 2. EntityFramework在哪里获取连接字符串到我的本地数据库?
- 3. EntityFramework单一连接字符串
- 4. 的EntityFramework连接字符串错误
- 5. 我的连接字符串在类库中存储在哪里?
- 6. 在哪里写连接字符串?在app.config或web.config?
- 7. 你在哪里存储连接字符串?
- 8. 你在哪里存储数据库连接字符串?
- 9. 代码优先:连接字符串和数据库在哪里?
- 10. SqlDataSource在哪里获取连接字符串的默认列表?
- 11. 在哪里存储和hwo访问连接字符串
- 12. 将字符串过滤器连接在哪里
- 13. 我在哪里可以获得连接字符串信息?
- 14. App = EntityFramework在Sql连接字符串中做了什么?
- 15. 在运行时提供连接字符串到EntityFramework DbContext
- 16. HttpHandler中的SubSonic ActiveRecord(连接字符串属于哪里?)
- 17. 哪里存储经典ASP的连接字符串?
- 18. 在哪里拆分字符串文字
- 19. 字符串从哪里来?
- 20. WSAT使用哪个连接字符串
- 21. 只为EntityFramework保留一个数据库连接字符串
- 22. 由EntityFramework和MVC连接字符串到SQL
- 23. 不同EntityFramework模型的连接字符串是否相同?
- 24. 在C#中使用字符串连接的字符串连接
- 25. 在哪里把连接字符串放在一个n层应用程序中?
- 26. 连接两列在哪里
- 27. 连接在哪里条款
- 28. 字符串字符连接
- 29. 比较字符串在哪里条款
- 30. MVC在哪里存储字符串
创建一个与我的DbContext的类名完全相同的连接字符串 – Omu 2011-04-26 18:09:40
。为什么这可能不起作用? – 2011-04-27 08:44:47
嗯,我发现了这个问题。我在上下文构造器中设置数据库的名称,看起来如果有人这样做,那么它也必须是连接字符串的名称!请投票... – 2011-04-27 09:05:39