摘自:http://blog.csdn.net/dyllove98/article/details/9289553 資料庫生成位置可控制(其實主要就是DbContext的構造函數) 1.使用DbContext的構造函數:public DbContext(string nameOrConnection ...
摘自: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類的實現。