我使用EF 4.3和代码优先的方法。实体框架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支持的较新的configsection,我没有办法在连接字符串中指定数据库名称。我尝试了以下,但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
默认的数据库名称中使用
据我所知,有一种方法可以通过将一个值传递给基于DBContext
对象的nameOrConnectionString
参数来覆盖此默认命名。
所以,我可以做这样的事情:
public MyDBContext() : base("MyDB") { }
但是,如果我采取这种做法我结束了硬编码DB名字为我的应用程序和个人而言,我不喜欢这样。
我想知道是否有任何方法可以方便地从Web.config
文件中为我的数据库上下文传递数据库名称,还是应该继续使用<connectionstrings>
部分?
一般来说,我不指望DB名称改变。但可能会出现数据库名称可能与同一SQL实例中的另一个数据库名称冲突的情况。如果我想在同一个SQL实例上运行同一个应用程序的多个实例,也是这种情况,如果不重新编译应用程序并更改数据库名称,则无法完成此操作。不理想。 –
然后我会说看看上面两个选项之一。就个人而言,ADO.NET博客的想法似乎是两者中最好的选择。 –
谢谢,我想我会坚持使用参考文章中的Web.config文件中的connectionstring键。 –