我正在编写一个ASP MVC 3应用程序。我正在使用Sql Server 2008 R2作为我的数据库。
我创建了我的数据模型,我的DbContext
名为EFDbContext
。
我创建了名为SportsStore
的数据库。
我的连接字符串是:
<add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportsStore;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" />
我运行应用程序但没有显示数据。
我发现EF会自动生成一个新数据库SportsStore.Domain.Concrete.EFDbContext
,但我希望它使用我之前创建的SportsStore,并自动将我的模型属性映射到表列。
如果我禁用自动生成数据库功能,我会收到以下错误:
无法打开数据库“SportsStore.Domain.Concrete.EFDbContext” 登录要求
实体框架是否应该尝试打开SportsStore数据库?它为什么试图打开那个?我有错误的连接字符串吗?
答案 0 :(得分:2)
奇怪......你有没有试过这个连接字符串?我认为你需要MARS用DbContext做一些事情。
<add name="EFDbContext" connectionString="Data Source=LOCALHOST\SQLEXPRESS;Initial Catalog=SportsStore;Integrated Security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
这是唯一与我的项目不同的东西。你确定这个班级&amp;连接字符串的命名完全相同?您是否尝试过像这样命名连接字符串?
<add name="SportsStore.Domain.Concrete.EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportsStore;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" />
答案 1 :(得分:2)
我可以给你一个建议。 当我在一个项目(通常是类库)中使用我的DbContext和相应的连接字符串时,我遇到了类似的困难。但是如果你在win form等其他项目中使用它,它会忽略后者。它尝试从启动项目的配置文件中获取连接字符串。
如果是这种情况,请尝试将连接字符串放在启动项目配置文件中。
答案 2 :(得分:1)
答案 3 :(得分:1)
我已经注释掉了默认的连接字符串并将其放在了下面:
<connectionStrings>
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcMovie-20130509163734;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Mvc4Movie-20130509163734.mdf" providerName="System.Data.SqlClient" />-->
<add name="MoveieDBContext" ...
这使EF忽略了我的连接字符串并生成了自己的连接字符串。取消注释默认连接,使EF使用我的,这一切都有效。