2012-05-03 97 views
1

我工作的一個asp.net應用程序,我有以下情形的工作:與自動生成的POCO實體

我有我的表的EDMX filw和我創造了我的POCO實體從「添加代碼生成項目「,我的問題是我應該在哪裏添加我的自定義方法例如(checkIfEmailExists,AddUser等..),因爲如果我在運行自定義工具或更新我的edmx文件時將它們添加到我的poco實體中,實體將被重新生成,而我失去我所有的方法?

回答

3

您的實體應與某些業務邏輯或安全性分開。你應該創建一個類,像Security,在那裏你會實現那些依賴於你的實體的方法,但是你不應該直接將它們添加到你的實體中。

您創建的每個班級都應該嘗試遵循單一責任原則。即使您的實體類可能只包含公共屬性,您應該首先考慮AddUser或CheckIfEmailExists是否確實屬於這些類。如果他們不屬於那裏,把他們分成他們自己的班級。如果你有把這些東西放入你的實體的強烈論據,那麼把這些方法放到這些實體中。

然後,AddUser又做了什麼?如果你有一個類/表Users,和另一個類/表UserDetails,你會有AddUser作爲前一類/表或後者的一部分嗎?

+0

我有一張桌面叫做用戶,我在 –

+0

上做了這些功能但是你爲什麼要把這些方法作爲實體的一部分?有必要嗎?你有沒有考慮另一種獲得理想結果的方式? –

+0

我想我應該爲我所有的poco實體創建bll類,並將這些類中的方法設置爲正確的? –

2

生成的類是partial - 它包含類的一部分。您可以在別處創建另一個文件,按照命名(即名稱空間和類名稱以及關鍵字partial)。當執行新的自動生成時,該文件不會被重寫。你把你的自定義代碼放在這裏。這些文件由編譯器「合併」。