所以我一直在使用Entity Framework(在我的主项目的v5上)。我一直有一个问题,但永远找不到确定的答案 - 我的连接字符串的名称是否必须与我的DbContext的名称相匹配才能使EF正常工作?
看起来如此(我从未做过任何不同的事情),但我不想在我的Web.config中提供“魔术字符串”以便EF工作。在我看来,将DefaultConnection作为名称并且EF以其他方式连接会更好。
以下是我的Web.config的引用(某些名称已更改):
<connectionStrings>
<add name="MyContext" connectionString="Data Source=|DataDirectory|MyDatabase.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
......还......更远......
<entityFramework>
<contexts>
<context type="MyProject.Path.To.MyContext, MyProject.Path.To, Version=1.0.0.0, Culture=neutral">
<databaseInitializer type="MyProject.Path.To.MyInitializer, MyProject" />
</context>
</contexts>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
任何见解都将受到赞赏。
答案 0 :(得分:11)
我一直有一个问题,但永远找不到确定的问题 回答 - 我的连接字符串的名称是否必须匹配 我的DbContext的名称,以便EF正常工作?
没有。您可以将连接字符串名称传递给DbContext的基础构造函数,即
public class MyDbContext : DbContext
{
public MyDbContext()
: base("MyConnectionStringName")
{
}
}
DbContext
上还有一个构造函数,如果您想自己创建连接,则会使用DbConnection
参数。
最后,您可以提供自己的IDbConnectionFactory
实施,并使用它代替LocalDbConnectionFactory
中指定的默认app.config
。您可以在配置中更改它,或者在运行时将其设置如下:
Database.DefaultConnectionFactory = new MyCustomConnectionFactory();