2012-09-11 223 views
0

我有一個UsersContext:DbContext與DbSet Users {get;組; }在運行時更改dbContext

UsersController.cs

public class UsersController : Controller 
{ 
    private UsersContext db = new UsersContext("dbA"); 

    public ViewResult Index() 
    { 
     if (...) 
      db = new UsersContext("dbA"); 
     else 
      db = new UsersContext("dbB"); 
     return View(db.Users.ToList()); 
    } 
} 

這將返回良好的關聯列表。
如果讓我選擇我DBB有良好的名單,但是當我在細節上繼續下去的結果之一:

public ViewResult Details(int id) 
{ 
    User user = db.Users.Find(id); 
    return View(user); 
} 

的分貝的的connectionString相關聯給DBA不是DBB。 爲什麼新的數據庫沒有很好的啓動和保存?

回答

1

這是因爲您的Index操作和Details操作不會在同一個控制器實例上執行。您可以將數據庫名稱保留在會話變量中,並使用它來創建DbContext實例。

+0

這是一個好主意,但會話在Controller構造函數中始終爲空。 – MaT

+0

@MaT將構造函數中的邏輯移至'Initialize'方法。 – Eranga

+0

是的,這就是我所做的感謝! – MaT