2009-08-27 84 views
1

當創建一個具有外鍵值的新實體對象時,我需要爲該對象創建一個新的實體鍵(.net 3.5中的實體框架),但是我無法決定在我的應用程序中應該在哪裏執行此操作。ASP.net MVC:我應該在哪裏創建/聲明實體鍵?

現在,當我使用外鍵創建新記錄時,我在控制器中創建了實體鍵(在這種情況下,從成員資格提供程序中提取用戶ID),將其分配給對象並將其傳遞給 知識庫 服務層。

這是否有任何問題,或者我應該將對象加上用戶ID傳遞給 存儲庫 服務層,並讓它處理實體密鑰創建?傳遞一個對象看起來更清晰,但有多個控制器以這種方式分配鍵會讓我感到緊張。謝謝。

回答

4

我認爲這是一個關注點分離的問題。存儲庫涉及檢索和添加/更改/刪除實體。它不應該對建築實體負責。相反,控制器實際上不應該負責構建實體(控制器應該將數據推送到視圖所需的大量工作,並處理來自視圖的命令將這些命令委託給業務邏輯......業務邏輯屬於別處(如域)。)誠實地說,你應該創建一個EntityBuilder來處理創建實體的過程。您可以將對象和用戶標識傳遞給構建器,然後構建器將爲您提供完全構建的實體,然後將其傳遞給存儲庫。

編輯:

即使從「庫」向「服務層」的改變,主要仍然是相同的。將您的實體構建到專用構建器的過程中,並維護您對問題的分離。

+0

你的回答非常明智。我不明白這個問題。 – 2009-08-27 16:53:43

+0

我說錯了,應該從你的帖子中實際上說「服務層」而不是「reposity」,這聽起來確實是處理實體創建的地方。 – 2009-08-27 17:27:51

+0

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

相關問題