dae*_*aai 3 entity-framework ef-code-first entity-framework-4.1
首先使用EF 4.1代码我想停止EF从模型创建数据库.据我所知,如果你传递Connectionstring名称,它将使用该连接字符串中的现有数据库.但是,如果数据库不存在,那么它将创建数据库,将所有表格形成模型.
<connectionStrings>
<add name="DiaryContext" connectionString="Data Source=.;Initial Catalog=Diary;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
Run Code Online (Sandbox Code Playgroud)
public MyDiaryContext() :
base("name=DiaryContext")
{
this.Configuration.LazyLoadingEnabled = true;
this.Configuration.ProxyCreationEnabled = false;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,它的行为如下:
(1)如果数据库不存在,那么它将创建包含所有表等的数据库.
(2)如果数据库存在且没有表,那么它将不会创建新表
(3)如果我添加新模型的EF代码,那么它将不会在数据库中创建新表.
我对2和3很满意但是在(1)的情况下如果数据库不存在那么我希望它抛出异常而不是创建db和表.
在我的情况下,数据库由DBA管理,我没有完全控制它.
有没有人知道如何实现这一目标?
非常感谢,
首先使用EF代码时,需要设置DB Initializer I,例如在我的DataContext的构造函数中执行此操作
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<WebContext>());
Run Code Online (Sandbox Code Playgroud)
您可以使用DropCreateDatabaseIfModelChanges和DropCreateDatabaseAlways等一些默认实现.但是,如果您不生成任何数据库或表,只需确保没有设置或继承初始化程序,您可以对现有数据库使用该模型.scot gu的好文章