簡體   English   中英

Fluent API =數據注釋?

[英]Fluent API = Data Annotations?

快速問一下,Fluent API在功能方面是否可以替換數據注釋? 數據注釋中的功能未包含在Fluent API中?

我想使用Fluent API,因為Separation of Concern(在我的模型和持久性之間),約定優於配置(映射定義在一個地方DbContext.OnModelCreating()但不是在每個模型屬性)並且我想使用VS 2010層驗證來確保我的POCO類永遠不會依賴於EF, 但如果我從源代碼中完全刪除Data Annotation,我會想念什么?

FluentValidation.NET提供數據注釋的全部功能甚至更多功能。 因此,如果您使用FV而不是數據注釋,那么您絕對不會遺漏任何內容。

我想知道這是因為我希望我的POCO類與EF完全隔離(我的存儲庫和UoW模式使得kt可以移動到NHibernate)。

Fluent API>數據注釋,即Fluent API具有比數據注釋更多的功能 ,對映射表和創建關系很有用。 但是, Fluent API沒有使用[Display(Name:=...)][DisplayFormat(DataFormatString=...)][Required(ErrorMessage=...)] @Html.LabelFor@Html.EditorFor的良好標簽和驗證[Required(ErrorMessage=...)] 這讓我很頭疼。

現在發現了這樣的想法:

  1. 在數據層中使用Fluent API,因此我的模型真正的POCO類(POCO項目)和dll可以在WCF和其他將訂閱此服務的項目中使用。

  2. 使用ViewModel的數據注釋。 由於這只是在UI層內,並且ViewModel從未共享到除MVC View之外的其他項目,我不介意擁有Data Annotation屬性。

  3. 將(1)中創建的約束重做為(2),如[Required][MaxLength] 我發現有些人說重復和揮發DRY原則是值得的,因為ViewModel和域模型應該是分開的並且彼此沒有關系,即使我認為MaxLength有些相關(只是一個小的重復,它應該可以n層架構+我可以使用靜態類和const來使兩邊的長度相同)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM