ASP.net MVC:我的设计应该在哪里创建/声明实体键?

时间:2009-08-27 16:39:48

标签: asp.net-mvc design-patterns entity-framework entitykey

当创建具有外键值的新实体对象时,我需要为该对象创建一个新的实体键(.net 3.5中的实体框架),但是我无法确定应用程序在哪里应该执行此操作

现在,当我使用外键创建新记录时,我在控制器中创建实体密钥(在这种情况下是从成员资格提供程序中提取的用户ID),将其分配给对象并将其传递给存储库服务层。

是否有任何问题,或者我应该将对象加上用户ID传递给存储库服务层并让它处理实体密钥创建?传递一个对象似乎更干净,但让多个控制器以这种方式分配键让我感到紧张。感谢。

1 个答案:

答案 0 :(得分:4)

我认为这是一个关注点分离的问题。存储库涉及检索和添加/更改/删除实体。它不应该负责建立实体。相反,控制器实际上也不应该负责构建实体(控制器应该将数据推送到视图所需的大量工作,并处理来自视图的命令将这些命令委托给业务逻辑...业务逻辑属于其他地方(如域)。)说实话,您应该创建某种EntityBuilder来处理创建实体的过程。您可以将对象和用户ID传递给构建器,然后构建器将为您提供完全构建的实体,然后可以将其传递到存储库。

编辑:

即使您从“存储库”更改为“服务层”,主体仍保持不变。将构建实体的过程委派给专门的构建者,并保持关注点分离。