在以下示例中,使用最少冗餘代碼實現多租戶的有效方法是什麼?在這種情況下,租戶是一名學生。學生的學校有2個地點,每個地點都要求將數據(即課程)存儲在單獨的數據庫中。當學生登錄時,他們的位置決定從哪個數據庫中提取。ASP.NET MVC應用程序中的多租戶
我正在使用實體框架和存儲庫模式。目前我有訪問位置1數據庫的實現。我已經研究了實現位置2的不同選項,例如在HomeController構造器中注入TenantContext,但是我堅持如何設置正確的數據庫連接,以及哪種方法最有效。
以下是僅位置1的代碼。
示例控制器
public class HomeController : Controller
{
ICourseRepository courseRepository;
//How to set the correct repository to use based on location?
public HomeController(ICourseRepository courseRepository)
{
this.courseRepository = courseRepository;
}
//Register for a new class
public ViewResult Register()
{
var courseList = courseRepository.AvailableCourses();
return View(courseList);
}
}
CourseRepository
public class CourseRepository : ICourseRepository
{
private Location1DB context = new Location1DB();
public List<Course> AvailableCourses()
{
//Get available courses from Location 1 Course Table
}
}
Location1Model.Context.cs(這是通過使用EF的DbContext發生器genereated)
public partial class Location1DB: DbContext
{
public Location1DB()
: base("name=Location1DB")
{
}
public DbSet<Course> Courses { get; set; }
}
的Web.config
<connectionStrings>
<add name="Location1DB" ... />
<add name="Location2DB" ... />
</connectionStrings>
我不認爲你明白多租戶的含義。多租戶意味着您有多個網站都使用相同的代碼庫,並且只通過其URL(或可能在用戶登錄中的信息)進行區分。在這種情況下,您可能會有兩個網站提供相似的內容,並使用相同的代碼,但使用不同的主題或不同的佈局,具體取決於用戶輸入的網址。 – 2013-03-18 17:08:46
好的,那麼上面這種情況是否存在一個術語?代碼可能會爲不同用戶重疊但數據源不同。 – user1620141 2013-03-18 17:27:51
這是一個引導我進入多租戶的帖子的例子:http://stackoverflow.com/questions/2624154/using-multiple-databases-within-one-application – user1620141 2013-03-18 18:00:44