2017-06-02 155 views
0

我有一個現有的數據庫和現有的域,它最初是使用nHibernate創建和訪問的,現在正在將它移動到實體框架核心。實體框架核心 - 調試映射

我已經開始嘗試訪問域的一個元素(不幸的是與很多其他實體緊密耦合)。這個域名是非常傳統和單一的,不能作爲這個練習的一部分進行修改。

我收到很多錯誤,類似於: 「屬性'DateTimeFormatInfo.AbbreviatedDayNames'無法映射,因爲它的類型'String []'不是受支持的基元類型或有效的實體類型。要麼顯式映射此屬性,要麼使用'[NotMapped]'屬性或'OnModelCreating'中的'EntityTypeBuilder.Ignore'忽略它。「除了.NET類型映射之外,很難嘗試確定映射失敗的位置。是否有工具或輕鬆識別故障部分的方法?

我試過以下內容: - SQL跟蹤,沒有什麼,因爲它在應用程序中失敗。 - 異常只是給出了錯誤,沒有內部異常或更多信息。 - 在整個解決方案中對包含「DateTimeFormatInfo」類型元素的實體進行文本搜索。沒有了。 - 在包含或使用屬性/函數AbbreviatedDayNames的實體的整個解決方案中進行了文本搜索,也沒有任何結果。

因此,我堅持試圖找到究竟哪個實體映射失敗。

此外,我渴望使用EF Fluent API進行任何映射。

回答

1

您一直在搜尋錯誤的文章。
DateTimeFormatInfo.AbbreviatedDayNames不是物業。 您應該嘗試查找任何類型爲'String []'的屬性,因此請在Entites中進行搜索。
而錯誤本身說明問題出在哪裏。 EF無法將字符串數組映射到任何數據庫類型。

+0

好吧所以有兩個問題,如果它與DateTimeFormatInfo.AbbreviatedDayNames無關,爲什麼它在錯誤消息中提到它。該屬性是一個字符串[],但爲什麼給這個名字?其次,是否有任何工具可以清晰地顯示映射和映射驗證問題? – user281921

+0

我不確定你爲什麼只用DayNames獲得這些信息。 我用'String [] SomeArray'測試了實體並得到錯誤: 「屬性'Party.SomeArray'無法映射,因爲它的類型'String []'不是受支持的基本類型或有效的實體類型,要麼顯式映射這個屬性,要麼忽略它。「 所以在我的情況下,'SomeArray'是屬性本身的名稱。 你可能有一些具體的情況。 – borisdj

+0

這就是我想要知道的,AbbreviatedDayNames屬性的確切位置,以及我的哪些實體。就像我說的我有很多,文本搜索沒有找到這個屬性。我意識到錯誤是在映射字符串[],但我很難找到它,因此請求一些工具或更簡單的方法。 – user281921

0

我經歷了完全相同的錯誤作爲上述遷移應用程序到實體框架的核心,以及剛纔

The property 'DateTimeFormatInfo.AbbreviatedDayNames' could not be mapped, because it is of type 'String[]' which is not a supported primitive type or a valid entity type. Either explicitly map this property, or ignore it using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'."

在我的情況下,問題涉及到實體與CultureInfo屬性類型。

System.Globalization.CultureInfo.DateTimeFormat是一個DateTimeFormatInfo類型,是我錯誤描述的屬性。