3

我決定在實體框架中使用流暢映射。我的意圖是通過沒有任何屬性和自動映射函數的代碼來映​​射每個代碼。我找到的最好的方法是EntityTypeConfiguration類,我爲我的項目中的每個實體實現。如何禁用實體框架中屬性的自動映射

後來我將屬性添加到我的實體之一。這個屬性不需要被持久化。我期望,直到我添加此屬性的映射,它將被數據庫和持久層忽略。不幸的是,它不會這樣工作,並且屬性被映射。唯一的方法是使用Ignore方法或NotMapped屬性,但我不想明確地做到這一點。

有什麼辦法,阻止實體框架automapping?我試圖從DbModelBuilder中刪除所有約定,但它沒有幫助。

回答

1

據我所知,沒有其他解決方法。您需要使用Ignore()[NotMapped]。我傾向於喜歡前者,因爲它不會混淆模型。

+0

好吧,但這不是要求。沒有自動映射屬性是有原因的。想象一下,你可以添加一個你不想映射的自定義屬性。對於進入映射類並改變它的每個這樣的情況將是一種矯枉過正的情況,爲什麼我會在映射中提到一個屬性,那是沒有映射的?問題在這裏擴展更多的細節:http://stackoverflow.com/questions/42249724/how-to-disable-in-ef7-core-the-mapping-of-properties-on-the-class – baHI

+0

@baHI是這個評論在參考另一個問題時有聯繫?上面的問題實際上是指排除特定屬性。 – Michael

0

其實我已經嘗試了很多辦法: - 自定義的約定,以除去映射特性 - 消除所有公約

但最簡單的(和最乾淨的)方法是使用映射類的內部反射並禁用所有未配置的屬性映射。

該代碼(也是一個使用示例)在我的公開要點內。 https://gist.github.com/hidegh/36d92380c720804dee043fde8a863ecb