ControllerFactory:实体框架

时间:2010-01-01 07:31:14

标签: asp.net-mvc controller

我最近跟随Stephen Walther使用实体框架为您的数据模型创建了一个通用存储库,其中包含以下链接http://bit.ly/7BoMjT

在这篇博客中,他简要介绍了如何创建一个通用的存储库以及为什么建议这样做(为了避免摩擦)。博客本身没有详细介绍如何将GenericRepository注入您的项目,因为您需要下载他的C​​ommon Code源代码。然而,一旦我终于理解了Repository模式的重要性,以及它如何在我在ASP.Net MVC中创建的数据模型中产生影响,我想知道我是否可以做一些类似于我的控制器和视图的东西?

我可以创建一个ControllerRepository或ControllerFactory(因为我已经Bing了)并创建了一个带有5个ActionResults的通用控制器,具体取决于我注入GenericRepository数据模型的内容(即我有DellXPSComputers,GateWayComputers,HPComputers作为单个db datamodel)

除了我创建的Generic之外,实际上只有一个控制器可以去抓取正确的数据模型,然后查看?

如果是这样,实现这个的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

可以创建一个通用的控制器工厂,但我没有看到你想要的很多场景。除了在测试和重定向中,您永远不会直接调用控制器方法(与您在许多地方调用的存储库方法相比)。

答案 1 :(得分:0)

是的!你绝对可以!

我过去做过非常成功。结果是,您最终得到的Web应用程序层几乎没有代码(只是为您的实体提供CRUD服务所需的内容)。

最终,在CreateController

的实施中,您最终会得到类似的结果
Type controllerType = controllerbase.MakeGenericType(entityType, datacontextType);
var controller = Activator.CreateInstance(controllerType) as IController;
return controller;

比我更聪明的人会使用IOC框架来注入类型,我使用普通的旧反射并从URL中的路由值中读取类型名称,如:

http://computer/repo/entityname/by/fieldname/value.html

祝你好运!