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

问题描述:

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

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

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

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

编辑:

即使从“库”向“服务层”的改变,主要仍然是相同的。将您的实体构建到专用构建器的过程中,并维护您对问题的分离。

+0

你的回答非常明智。我不明白这个问题。 – 2009-08-27 16:53:43

+0

我说错了,应该从你的帖子中实际上说“服务层”而不是“reposity”,这听起来确实是处理实体创建的地方。 – 2009-08-27 17:27:51

+0

这很有道理,谢谢你的洞察力。 – 2009-08-27 17:44:28