我正在使用带有代码优先方法的 EF 4.3。
对于 EF 4.3,它建议使用新的<entityFramework />
配置部分来初始化上下文的连接字符串。
我在网上做了一些搜索,似乎找不到一种方便的方法来使用这种方法来初始化具有可配置数据库名称的连接。
例如,假设我的MyDBContext
应用程序中有一个实体。我希望它使用连接字符串中指定的数据库名称Initial Catalog=MyDB;
使用 EF 4.1 中的旧方法,我可以通过将连接字符串添加到<connectionstring>
配置文件中的部分来做到这一点。
<add name="MyDBContext" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
如果我想使用 EF 4.3 支持的较新的配置部分,我无法在连接字符串中指定数据库名称。我尝试了以下但该Initial Catalog
属性被忽略。我相信它被忽略是有充分理由的,因为整个事情都DefaultConnectionFactory
可以被我的应用程序中的多个上下文使用
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
我的 codefirst 方法由于使用它而创建的默认数据库名称是MyNamespace.MyDBContext
我知道有一种方法可以通过将值传递给nameOrConnectionString
基础DBContext
对象的参数来覆盖此默认命名。
所以我可以做这样的事情:
public MyDBContext() : base("MyDB") { }
但是,如果我采用这种方法,我最终会将数据库名称硬编码到我的应用程序中,我个人不喜欢这样。
我想知道有什么方法可以方便地从Web.config
文件中传递我的数据库上下文的数据库名称,还是应该继续使用该<connectionstrings>
部分?