我正在努力找出这一点。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