【问题标题】:"The given reader is incompatible with the current materializer. Create a different materializer for this reader."“给定的阅读器与当前的物化器不兼容。为这个阅读器创建一个不同的物化器。”
【发布时间】:2012-12-20 15:07:35
【问题描述】:

我收到了上述错误消息,我希望有人可以为我翻译。我通过一些搜索在网上找到的唯一参考是代码块的引用,没有解释。它们看起来像是相关的,但实际上并没有提供任何帮助来弄清楚发生了什么。

背景:我试图在 mvc2/C#/EF/SQL 堆栈中维护一大块遗留代码,它使用这些物化器(可能还有读取器)作为与数据库通信的一种方式。我基本上不了解物化器是如何工作的,除了“哦,这似乎有点像它在做这样的事情”,你只是从代码本身的通读中得到的。我必须对使用物化器的表/对象集之一的数据库进行一些更改。我适当地调整了物化器(据我所知),大量欺骗现有代码,为添加的列/属性添加等效行,并删除那些已删除的行。我还在 c# 类中注释掉了一个名为 TryParse 的函数,因为据我所知,没有人使用它,而且我们正试图减少一些麻烦。它现在似乎在使用该东西的某些时间(但不是全部)失败了。我真的不知道在我更改之前它是否失败了。

我不需要回答到底发生了什么——我怀疑这会占用太多对代码块的评论等等。大多数情况下,我希望有人能给我一个或两个“啊,这个错误消息通常意味着”的一般指针,这样我就不会完全盲目地飞行(尽管如果有人能够想出更多根据我提供的信息,那将是很棒的)。

感谢您的宝贵时间。

【问题讨论】:

    标签: c# entity-framework asp.net-mvc-2


    【解决方案1】:

    错误消息来自EFExtensions。来源表明,当读取器中记录的形状(字段计数和字段名称)与物化器期望的形状不匹配时,将引发此错误。

    (物化器只是将对象实例其他东西中制作出来的东西,在这种情况下,数据由阅读器读取)

    从 EFExtensions 源中我并不清楚这在“正常”情况下是如何发生的,因为看起来预期的形状是从 first 记录读取推断出来的,然后是所有后续记录被检查。显然,对于普通的IDataReader,所有记录的形状都相同。

    但是,听起来您可能有自定义物化器在工作(可能从 EFExtensions 继承,因此您会收到它们的错误消息),在这种情况下,答案可能在于您的物化器代码。

    【讨论】:

    • 谢谢。现在正在调查。
    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2012-04-11
    • 2016-02-14
    • 1970-01-01
    相关资源
    最近更新 更多