如何关闭ASP.NET MVC 3中实体框架的代码优先模式?

更新于
2026-07-29 22:28:56
24阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计510个文字,预计阅读时间需要3分钟。

如何关闭ASP.NET MVC 3中实体框架的代码优先模式?

在进行ASP.NET MVC3音乐商店教程开发时,若未连接到附加数据库EF,而是正在SQLEXPRESS中创建新数据库,以下是一些防止此类情况发生的措施:

1. 配置连接字符串:确保EF的配置文件中连接字符串指向现有数据库,而不是默认创建新数据库。

2.检查代码逻辑:审查代码,确保在数据库操作前已经存在相应的数据库。

3.使用Entity Framework的`Database.SetInitializer`:通过重写`OnModelCreating`方法,使用`Database.SetInitializer`来避免自动创建数据库。

示例代码如下:

csharp

protected override void OnModelCreating(DbModelBuilder modelBuilder){ Database.SetInitializer(new DropCreateDatabaseIfModelChanges());}

使用此配置,EF会连接到现有数据库,如果模型更改,则会删除并创建数据库,而不是创建新数据库。

我正在做ASP .NET MVC3音乐商店教程而不是连接到附加数据库EF正在SQLEXPRESS中创建一个新数据库(代码优先).如何防止这种情况发生.使用EF的配置应该连接到现有数据库 – 而不是创建新数据库.
我有一个DbContext类,如下所示

using System.Data.Entity; namespace MusicStore.Models { public class MusicStoreEntities:DbContext { public DbSet<Album> Albums { get; set; } public DbSet<Genre> Genres { get; set; } } }

我的web.config有以下连接字符串

<connectionStrings> <add name="MusicStoreEntities" connectionString="data source=.\SQLEXPRESS; Integrated Security=SSPI; AttachDBFilename=|DataDirectory|\MvcMusicStore.mdf; User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings> 在Application_Start()中,将数据库初始化策略设置为:

DbDatabase.SetInitializer<MusicStoreEntities>( new CreateDatabaseIfNotExists<MusicStoreEntities>());

这将使用默认初始化程序,并且只有在找不到数据库时才会创建数据库.实际上有三种可能性:

> CreateDatabaseIfNotExists
> DropCreateDatabaseAlways
> DropCreateDatabaseIfModelChanges

你也可以在Application_Start()中使用它来做一些自定义初始化

如何关闭ASP.NET MVC 3中实体框架的代码优先模式?

Database.SetInitializer<MusicStoreEntities>(new MusicStoreEntityInitializer());

然后,根据您的需要添加一个派生自三种初始化类型之一的新类.

namespace MusicStore.Models { public class MusicStoreEntityInitializer : CreateDatabaseIfNotExists<MusicStoreEntityInitializer> { protected override void Seed(MusicStoreEntity context) { base.Seed(context); // your code to populate db with test data } } }

通过这种设置,您可以获得很大的灵活性.

本文共计510个文字,预计阅读时间需要3分钟。

如何关闭ASP.NET MVC 3中实体框架的代码优先模式?

在进行ASP.NET MVC3音乐商店教程开发时,若未连接到附加数据库EF,而是正在SQLEXPRESS中创建新数据库,以下是一些防止此类情况发生的措施:

1. 配置连接字符串:确保EF的配置文件中连接字符串指向现有数据库,而不是默认创建新数据库。

2.检查代码逻辑:审查代码,确保在数据库操作前已经存在相应的数据库。

3.使用Entity Framework的`Database.SetInitializer`:通过重写`OnModelCreating`方法,使用`Database.SetInitializer`来避免自动创建数据库。

示例代码如下:

csharp

protected override void OnModelCreating(DbModelBuilder modelBuilder){ Database.SetInitializer(new DropCreateDatabaseIfModelChanges());}

使用此配置,EF会连接到现有数据库,如果模型更改,则会删除并创建数据库,而不是创建新数据库。

我正在做ASP .NET MVC3音乐商店教程而不是连接到附加数据库EF正在SQLEXPRESS中创建一个新数据库(代码优先).如何防止这种情况发生.使用EF的配置应该连接到现有数据库 – 而不是创建新数据库.
我有一个DbContext类,如下所示

using System.Data.Entity; namespace MusicStore.Models { public class MusicStoreEntities:DbContext { public DbSet<Album> Albums { get; set; } public DbSet<Genre> Genres { get; set; } } }

我的web.config有以下连接字符串

<connectionStrings> <add name="MusicStoreEntities" connectionString="data source=.\SQLEXPRESS; Integrated Security=SSPI; AttachDBFilename=|DataDirectory|\MvcMusicStore.mdf; User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings> 在Application_Start()中,将数据库初始化策略设置为:

DbDatabase.SetInitializer<MusicStoreEntities>( new CreateDatabaseIfNotExists<MusicStoreEntities>());

这将使用默认初始化程序,并且只有在找不到数据库时才会创建数据库.实际上有三种可能性:

> CreateDatabaseIfNotExists
> DropCreateDatabaseAlways
> DropCreateDatabaseIfModelChanges

你也可以在Application_Start()中使用它来做一些自定义初始化

如何关闭ASP.NET MVC 3中实体框架的代码优先模式?

Database.SetInitializer<MusicStoreEntities>(new MusicStoreEntityInitializer());

然后,根据您的需要添加一个派生自三种初始化类型之一的新类.

namespace MusicStore.Models { public class MusicStoreEntityInitializer : CreateDatabaseIfNotExists<MusicStoreEntityInitializer> { protected override void Seed(MusicStoreEntity context) { base.Seed(context); // your code to populate db with test data } } }

通过这种设置,您可以获得很大的灵活性.