摘自:http://blog.csdn.net/dyllove98/article/details/9289553
数据库生成位置可控制(其实主要就是DbContext的构造函数)
1.使用DbContext的构造函数:public DbContext(string nameOrConnectionString)
a、在app.config中添加:
1 <connectionStrings> 2 <add name="CodeFirstBlogContext" providerName="System.Data.SqlClient" connectionString="Server=.;Database=CodeFirstBlog;uid=sa;pwd=sa" /> 3 </connectionStrings>
注:当然这里也可以添加使用其他数据库,但是要提起安装好驱动:引用可参考此文:http://www.cnblogs.com/yylp521/p/3173176.html
b、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.sqlexpress数据库实例)
1 public BlogContext(string config) 2 : base(config) 3 { 4 }
这里可以显示的引用配置文件中的配置库,注:此处config可以直接写name=CodeFirstBlogContext,是配置文件中的connectionStrings下的name。
2. 使用DbContext的构造函数:public DbContext(DbConnection existingConnection, bool contextOwnsConnection)
a、在数据上下文类中添加构造函数(原来没有显示出现,调用默认的一般是本机.sqlexpress数据库实例)
1 public BlogContext(DbConnection connection,bool contextOwnsConnection) 2 : base(connection, contextOwnsConnection) 3 { }
b、使用时建立一个Connection即可
1 string connStr = "Server=.;Database=CodeFirstBlog2;uid=sa;pwd=sa"; 2 using (SqlConnection conn = new SqlConnection(connStr)) 3 { 4 using (var db = new BlogContext(conn, false)) 5 { 6 Console.WriteLine("输入一个新的Blog名称"); 7 var name = Console.ReadLine(); 8 9 var blog = new Blog { Name = name }; 10 db.Blogs.Add(blog); 11 db.SaveChanges(); 12 13 var query = from b in db.Blogs 14 orderby b.Name 15 select b; 16 17 foreach (var item in query) 18 { 19 Console.WriteLine(item.Name); 20 } 21 } 22 } 23 Console.ReadKey();
3. 使用数据的连接工厂
1 Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Server=.sqlexpress;Database=CodeFirstBlog4;uid=sa;pwd=sa"); 2 using (var db=new BlogContext()) 3 { 4 db.Database.Initialize(true); 5 db.Blogs.Add( new Blog { Name = "test" }); 6 db.SaveChanges(); 7 }
注:这里指定数据库名称无效,应该与Database的Initialize方法有关,待查证。
4.这里还有其他的DbContext构造函数可用,可直接查看DbContext类的实现。