2013-05-13 36 views
2

我在項目中編碼我們的POCO實體,其中我沒有提及EntityFrameworkDataAnnotations。第二個項目DataAccess包含實體的數據上下文和流暢配置。POCO實體Fluent API與數據註釋

某些實體屬性是IsRequiredHasMaxLength。使用該域的開發人員將不知道需要什麼,或者沒有Xml註釋文檔的情況下該屬性的最大長度。所以,我已經向屬性添加了文檔來傳達需求。

但問題是,如果需求更改,我必須更新評論。這意味着我正在更新2個庫 - Domain和DataAccess。

我一直擔心在引用域中的DataAnnotations;我的屬性沒有屬性。這些屬性將使開發人員可以訪問域實體,瞭解所需的內容或是否有最大長度的屬性。

是否有另一種方法來傳達屬性的需求,而不使用實體上的DataAnnotations或必須更新實體上的Xml註釋?

或者,我是否不必要地過分強調將DataAnnotation引用添加到Domain項目?

+0

這篇文章可能有一個很好的建議http://blog.ploeh.dk/2012/02/09/IsLayeringWorththeMapping/ – Fendy 2013-05-13 14:22:10

+2

我個人的感覺是,它不應該是一個問題,附加這些類型的註釋你的實體類。像列和表映射這樣的東西最好留給數據訪問層,這樣您的實體就不會與模型的內在部分無關,但在我看來,指定了您的實體的*內容*的要求的註釋是完全合適的。 – 2013-05-13 14:29:00

+1

我傾向於對這些問題進行實踐。如果某個屬性是使用您的域的開發人員必須知道的屬性,那麼它屬於該域。不要害怕引用數據註釋。我個人無法想象引用DataAnnotations程序集的方案會妨礙可重用性。這是一個比手動更新評論更好的解決方案。 – gabnaim 2013-05-13 15:00:54

回答

1

我認爲這可能是一個好主意,讓您的POCO實體沒有註釋,並且不包括對EntityFramework.dll的引用。更容易創建可移植的DLL並重用您的模型。也就是說,如果你曾經需要它。

但正如你所說,它使得它更難以擁有「自動記錄」模型。你可以試着用DbContext生成模型圖,這裏有一個power tool。也許這足以滿足您的文檔需求。我在具有> 200個實體的模型上嘗試過它,它工作正常。對於圖表生成需要cca 2min,但之後它工作正常,對於「文檔」目的很有用。

+0

安裝了電動工具,它看起來像它給我所需的文件。域實體的可移植性至關重要。謝謝! – IAbstract 2013-05-13 15:03:43

+0

EF電源工具創建了一個很好的Xml文檔,但是我找不到任何東西來從Xml創建幫助文件或標準文檔。有任何想法嗎?由於Sandcastle似乎需要一個項目或二進制文件,似乎並沒有提供一個好的解決方案。 – IAbstract 2013-06-14 16:42:14