控制数据库的位置默认情况下数据库是创建在localhost\SQLEXPRESS服务器上并且默认的数据库名为命名空间context类名例如我们前面的BreakAway.BreakAwayContext。有几种方法可以改变这种默认约定。利用配置文件在配置文件中新加一个连接字符串connectionStrings add nameBreakAwayContext providerNameSystem.Data.SqlClient connectionStringServer.\SQLEXPRESS;DatabaseBreakAwayConfigFile;Trusted_Connectiontrue / /connectionStrings注意这里连接字符串名称和我们的context类名相同都为BreakAwayContext。我们修改了一下默认的数据库名将BreakAway.BreakAwayContext改为BreakAwayConfigFile。我们在新增一个连接字符串connectionStrings !--add nameBreakAwayContext providerNameSystem.Data.SqlClient connectionStringServer.\SQLEXPRESS;DatabaseBreakAwayConfigFile;Trusted_Connectiontrue /-- add nameMy_Test providerNameSystem.Data.SqlClient connectionStringServer.;DatabaseMyBreakAwayDb;Trusted_Connectiontrue / /connectionStrings新建的连接串名称和context类名不同了所以我们要在BreakAwayContext的构造函数中指名连接串的名称public class BreakAwayContext : DbContext { public BreakAwayContext(): base(nameMy_Test) { } }利用DbConnectionDbContext有一个带DbConnection重载的构造函数说明我们也可以通过DbConnection来定位数据库位置。我们也要先修改BreakAwayContext的构造函数public BreakAwayContext(DbConnection connection) : base(connection, contextOwnsConnection: false) { }调用static void Main(string[] args) { try { var lodging new Lodging { Name Rainy Day Motel, }; var resort new Resort { Name Top Notch Resort and Spa, MilesFromNearestAirport 30, Activities Spa, Hiking, Skiing, Ballooning, }; var cstr Server.\SQLEXPRESS; DatabaseBreakAwayDbConnectionConstructor;Trusted_Connectiontrue; using (var connection new SqlConnection(cstr)) { using (var context new BreakAwayContext(connection)) { context.Lodgings.Add(lodging); context.SaveChanges(); } } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { Console.WriteLine( 保存失败); } Console.WriteLine(OK); Console.Read(); }使用连接工厂控制数据库位置Code First的默认连接工厂是SqlConnectionFactory。此连接工厂将使用SQL ClientSystem.Data.SqlClient的数据库引擎连接到数据库。默认的行为将选择在localhost\ SQLEXPRESS创建数据库并使用上下文类型的完全限定名作为数据库的名称。我们可以通过指定的连接字符串段来覆写默认规则。static void Main(string[] args) { try { Database.DefaultConnectionFactory new SqlConnectionFactory(Server.;Trusted_Connectiontrue); using (var context new BreakAwayContext()) { context.Database.Initialize(true); context.SaveChanges(); } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { Console.WriteLine( 保存失败); } Console.WriteLine(OK); Console.Read(); }PS用这个方法好像没办法指定数据库名默认名称为context类的完全限定名。数据库初始化初始化包括两个主要步骤。首先使用Code First在内存中根据默认规则和配置创建模型。其次使用已设置的数据库初始化器将用于存储数据的数据库初始化。初始化是延迟加载的所以创建一个实例的是不完全满足初始化发生的条件的。必须执行对模型的操作如查询或添加实体才会发生。但我们可以可以调用DbContext.Database.Initialize方法在没有对模型执行任何操作的时候强制初始化。using (var context new BreakAwayContext()) { context.Database.Initialize(true); }在数据库初始化产生时进行控制有三个方法可以控制数据库初始化时的行为。1 CreateDatabaseIfNotExistsCreateDatabaseIfNotExists方法会在没有数据库时创建一个这是默认行为。Database.SetInitializer( new CreateDatabaseIfNotExistsBreakAwayContext()); using (var context new BreakAwayContext()) { context.Database.Initialize(true); }2 DropCreateDatabaseIfModelChanges如果我们在在模型改变时自动重新创建一个新的数据库就可以用这个方法。在这开发过程中非常有用。Database.SetInitializer( new DropCreateDatabaseIfModelChangesBreakAwayContext()); using (var context new BreakAwayContext()) { context.Database.Initialize(true); }3 DropCreateDatabaseAlways如果你想在每次运行时都重新生成数据库就可以用这个方法。Database.SetInitializer( new DropCreateDatabaseAlwaysBreakAwayContext()); using (var context new BreakAwayContext()) { context.Database.Initialize(true); }如果我的文章对你有帮助就点一下推荐吧.(*^__^*)
EF Code First学习笔记:数据库创建
发布时间:2026/6/3 9:40:12
控制数据库的位置默认情况下数据库是创建在localhost\SQLEXPRESS服务器上并且默认的数据库名为命名空间context类名例如我们前面的BreakAway.BreakAwayContext。有几种方法可以改变这种默认约定。利用配置文件在配置文件中新加一个连接字符串connectionStrings add nameBreakAwayContext providerNameSystem.Data.SqlClient connectionStringServer.\SQLEXPRESS;DatabaseBreakAwayConfigFile;Trusted_Connectiontrue / /connectionStrings注意这里连接字符串名称和我们的context类名相同都为BreakAwayContext。我们修改了一下默认的数据库名将BreakAway.BreakAwayContext改为BreakAwayConfigFile。我们在新增一个连接字符串connectionStrings !--add nameBreakAwayContext providerNameSystem.Data.SqlClient connectionStringServer.\SQLEXPRESS;DatabaseBreakAwayConfigFile;Trusted_Connectiontrue /-- add nameMy_Test providerNameSystem.Data.SqlClient connectionStringServer.;DatabaseMyBreakAwayDb;Trusted_Connectiontrue / /connectionStrings新建的连接串名称和context类名不同了所以我们要在BreakAwayContext的构造函数中指名连接串的名称public class BreakAwayContext : DbContext { public BreakAwayContext(): base(nameMy_Test) { } }利用DbConnectionDbContext有一个带DbConnection重载的构造函数说明我们也可以通过DbConnection来定位数据库位置。我们也要先修改BreakAwayContext的构造函数public BreakAwayContext(DbConnection connection) : base(connection, contextOwnsConnection: false) { }调用static void Main(string[] args) { try { var lodging new Lodging { Name Rainy Day Motel, }; var resort new Resort { Name Top Notch Resort and Spa, MilesFromNearestAirport 30, Activities Spa, Hiking, Skiing, Ballooning, }; var cstr Server.\SQLEXPRESS; DatabaseBreakAwayDbConnectionConstructor;Trusted_Connectiontrue; using (var connection new SqlConnection(cstr)) { using (var context new BreakAwayContext(connection)) { context.Lodgings.Add(lodging); context.SaveChanges(); } } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { Console.WriteLine( 保存失败); } Console.WriteLine(OK); Console.Read(); }使用连接工厂控制数据库位置Code First的默认连接工厂是SqlConnectionFactory。此连接工厂将使用SQL ClientSystem.Data.SqlClient的数据库引擎连接到数据库。默认的行为将选择在localhost\ SQLEXPRESS创建数据库并使用上下文类型的完全限定名作为数据库的名称。我们可以通过指定的连接字符串段来覆写默认规则。static void Main(string[] args) { try { Database.DefaultConnectionFactory new SqlConnectionFactory(Server.;Trusted_Connectiontrue); using (var context new BreakAwayContext()) { context.Database.Initialize(true); context.SaveChanges(); } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { Console.WriteLine( 保存失败); } Console.WriteLine(OK); Console.Read(); }PS用这个方法好像没办法指定数据库名默认名称为context类的完全限定名。数据库初始化初始化包括两个主要步骤。首先使用Code First在内存中根据默认规则和配置创建模型。其次使用已设置的数据库初始化器将用于存储数据的数据库初始化。初始化是延迟加载的所以创建一个实例的是不完全满足初始化发生的条件的。必须执行对模型的操作如查询或添加实体才会发生。但我们可以可以调用DbContext.Database.Initialize方法在没有对模型执行任何操作的时候强制初始化。using (var context new BreakAwayContext()) { context.Database.Initialize(true); }在数据库初始化产生时进行控制有三个方法可以控制数据库初始化时的行为。1 CreateDatabaseIfNotExistsCreateDatabaseIfNotExists方法会在没有数据库时创建一个这是默认行为。Database.SetInitializer( new CreateDatabaseIfNotExistsBreakAwayContext()); using (var context new BreakAwayContext()) { context.Database.Initialize(true); }2 DropCreateDatabaseIfModelChanges如果我们在在模型改变时自动重新创建一个新的数据库就可以用这个方法。在这开发过程中非常有用。Database.SetInitializer( new DropCreateDatabaseIfModelChangesBreakAwayContext()); using (var context new BreakAwayContext()) { context.Database.Initialize(true); }3 DropCreateDatabaseAlways如果你想在每次运行时都重新生成数据库就可以用这个方法。Database.SetInitializer( new DropCreateDatabaseAlwaysBreakAwayContext()); using (var context new BreakAwayContext()) { context.Database.Initialize(true); }如果我的文章对你有帮助就点一下推荐吧.(*^__^*)