【问题标题】:Entity Framework Core - Debugging MappingEntity Framework Core - 调试映射
【发布时间】:2017-06-02 15:16:02
【问题描述】:

我有一个现有的数据库和一个现有的域,它最初是使用 nHibernate 创建和访问的,现在正在将其移至 Entity Framework Core。

我首先尝试仅访问域的一个元素(不幸的是,它与许多其他实体紧密耦合)。该域是非常遗留和单一的,不能作为本练习的一部分进行修改。

我收到很多类似的错误: “无法映射属性 'DateTimeFormatInfo.AbbreviatedDayNames',因为它的类型为 'String[]',它不是受支持的原始类型或有效的实体类型。要么显式映射此属性,要么使用 '[NotMapped ]' 属性或在 'OnModelCreating' 中使用 'EntityTypeBuilder.Ignore'。"

.NET 类型映射不谈,很难尝试找出映射失败的确切位置。是否有工具或方法可以轻松识别故障部分。

我尝试了以下方法: - SQL Trace,没有,因为它在应用程序中失败。 - 异常只是给出那个错误,没有内部异常或更多信息。 - 在整个解决方案中对具有“DateTimeFormatInfo”类型元素的实体进行了文本搜索。没有了。 - 在整个解决方案中对包括或使用属性/函数 AbbreviatedDayNames 的实体进行了文本搜索,也没有。

因此,我一直在尝试准确定位失败的实体映射。

此外,我渴望将 EF Fluent API 用于任何映射。

【问题讨论】:

    标签: c# entity-framework entity-framework-core


    【解决方案1】:

    您搜索的文本有误。
    DateTimeFormatInfo.AbbreviatedDayNames 不是属性。 您应该尝试查找任何类型为“String[]”的属性,因此请在 Entites 中进行搜索。
    错误本身说明了问题所在。 EF 无法将字符串数组映射到任何数据库类型。

    【讨论】:

    • 好吧,两个问题,如果它与DateTimeFormatInfo.AbbreviatedDayNames无关,为什么在错误消息中提到它。该属性是 String[] 但为什么要给出名称?其次,是否有任何工具可以清晰地显示映射和映射验证问题?
    • 我不知道您为什么会通过 DayNames 获得此信息。我刚刚用'String [] SomeArray'测试了实体并得到了错误:“无法映射属性'Party.SomeArray',因为它是'String []'类型,它不是受支持的原始类型或有效实体类型。要么显式映射此属性,要么忽略它。所以在我的例子中,'SomeArray' 是属性本身的名称。您的情况可能有些特殊。
    • 这就是我想要找出的,AbbreviatedDayNames 属性到底在哪里,在我的哪个实体上。就像我说的那样,我有很多,文本搜索找不到这个属性。我意识到错误在于映射字符串 [] 但我找不到它,因此需要一些工具或更简单的方法。
    • 假设你有一个文件夹 Entities 里面的所有实体,你不能只搜索那个文件夹中的所有文件来寻找'string[]'。
    • 我已经搜索了多个版本的 string[],但没有成功。虽然我同意你的观点,错误的第二部分是指字符串 [],但第一部分是我找不到的 DateTimeFormatInfo.AbbreviatedDayNames。所有这些我最初的问题仍然存在,如果有一个工具可以更好地分析实体和映射,然后只查看异常。
    【解决方案2】:

    我刚刚在将应用程序迁移到 Entity Framework 核心时也遇到了与上述完全相同的错误

    无法映射属性“DateTimeFormatInfo.AbbreviatedDayNames”,因为它的类型“String[]”不是受支持的原始类型或有效的实体类型。要么显式映射此属性,要么使用 '[NotMapped]' 属性或使用 'OnModelCreating' 中的 'EntityTypeBuilder.Ignore' 忽略它。”

    在我的情况下,问题与具有 CultureInfo 属性类型的实体有关。

    System.Globalization.CultureInfo.DateTimeFormatDateTimeFormatInfo 类型,是我的案例中错误描述的属性。

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      相关资源
      最近更新 更多