![](/img/trans.png)
[英]Entity framework WithRequired fluent api to data annotations mapping
[英]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=...)]
。 這讓我很頭疼。
現在發現了這樣的想法:
在數據層中使用Fluent API,因此我的模型真正的POCO類(POCO項目)和dll可以在WCF和其他將訂閱此服務的項目中使用。
使用ViewModel的數據注釋。 由於這只是在UI層內,並且ViewModel從未共享到除MVC View之外的其他項目,我不介意擁有Data Annotation屬性。
將(1)中創建的約束重做為(2),如[Required]
和[MaxLength]
。 我發現有些人說重復和揮發DRY原則是值得的,因為ViewModel和域模型應該是分開的並且彼此沒有關系,即使我認為MaxLength
有些相關(只是一個小的重復,它應該可以n層架構+我可以使用靜態類和const來使兩邊的長度相同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.