我正在努力找出這一點。LINQ to SQL,泛化
我正在研究一個ASP.NET MVC項目,使用LINQ to SQL來處理我的數據層。該數據庫由10個左右不同的「例外」表組成,例如「Exceptions.LADM」,「Exceptions.USB」,「Exceptions.GPO」。基本上這些表格正在追蹤用戶+機器信息以放鬆各種安全程序。
我的LINQ to SQL模型已經生成。我爲每個表提供了不同的課程。但是,我不確定如何在控制器中使用它們,而無需爲每種異常類型生成單獨的控制器操作。對於List
行動,我希望做這樣的事情:
// Example Request: /Exceptions/List/ladm
// Routing: Controller = "Exceptions", Action = "List", type = "ladm"
// Controller Action:
public ActionResult List(string type)
{
string viewname = "List-" + type; // refer to "List-ladm" view.
if(type == "ladm")
{
var items = _repository.ListAllLADMExceptions();
}
return View(viewname, items);
}
我的倉庫實現ListAll<XXXXXX>Exceptions
方法爲每個表。有沒有辦法避免10個不同的if/else語句?它看起來很醜,我確信有一種我想不到的更好的方式。可能是我從錯誤的角度接近它。
任何建議都會受到歡迎。
謝謝。
雖然這是其中一種情況,但性能並沒有那麼糟糕 - 您正在進行1次反射調用和一堆網絡IO(處理請求)。網絡IO是你慢的部分,而不是反射。 也許如果您對每個請求進行了100次反射調用,那麼您會很在意。 – 2009-01-07 22:37:05