默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayContext。有几种方法可以改变这种默认约定。利用配置文件在配置文件中新加一个连接字符串注意这里连接字符串名称和我们的context类名相同,都为BreakAwayContext。我们修改了一下默认的数据库名,将BreakAway.BreakAwayContext改为BreakAwayConfigFile。我们在新增一个连接字符串新建的连接串名称和context类名不同了,所以我们要在BreakAwayContext的构造函数中指名连接串的名称:publicclassBreakAwayContext:DbContext{publicBreakAwayContext():base("name=My_Test"){}}利用DbConnectionDbContext有一个带DbConnection重载的构造函数,说明我们也可以通过DbConnection来定位数据库位置。我们也要先修改BreakAwayContext的构造函数:publicBreakAwayContext(DbConnectionconnection):base(connection,contextOwnsConnection:false){}调用:staticvoidMain(string[]args){try{varlodging=newLodging{Name="RainyDayMotel",};varresort=newResort{Name="TopNotchResortandSpa",MilesFromNearestAirport=30,Activities="Spa,Hiking,Skiing,Ballooning",};varcstr=@"Server=.\SQLEXPRESS;Database=BreakAwayDbConnectionConstructor;Trusted_Connection=true";using(varconnection=newSqlConnection(cstr)){using(varcontext=newBreakAwayContext(connection)){context.Lodgings.Add(lodging);context.SaveChanges();}}}catch(System.Data.Entity.Validation.DbEntityValidationExceptionex){Console.WriteLine("保存失败");}Console.WriteLine("OK");Console.Read();}使用连接工厂控制数据库位置CodeFirst的默认连接工厂是SqlConnectionFactory。此连接工厂将使用SQLClient(System.Data.SqlClient的)数据库引擎连接到数据库。默认的行为,将选择在localhost\SQLEXPRESS创建数据库,并使用上下文类型的完全限定名作为数据库的名称。我们可以通过指定的连接字符串段,来覆写默认规则。staticvoidMain(string[]args){try{Database.DefaultConnectionFactory=newSqlConnectionFactory(@"Server=.;Trusted_Connection=true");using(varcontext=newBreakAwayContext()){context.Database.Initialize(true);context.SaveChanges();}}catch(System.Data.Entity.Validation.DbEntityValidationExceptionex){Console.WriteLine("保存失败");}Console.WriteLine("OK");Console.Read();}PS:用这个方法好像没法指定数据库名,默认名称为context类的完全限定名。