“给定的阅读器与当前的物化器不兼容。为这个阅读器创建一个不同的物化器。”

时间:2012-12-20 15:07:35

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

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

背景:我正在尝试在mvc2 / C#/ EF / SQL堆栈中维护一大块遗留代码,它使用这些物化器(可能是读者)作为与数据库通信的一种方式。我基本上没有理解物化器如何工作超出“哦,看起来有点类似于这样的东西”,你只需从代码本身的读物中获得。我不得不在使用材质化器的一个表/对象集上对数据库进行一些更改。我适当调整了物化器(据我所知),大量欺骗现有代码,为添加的列/属性添加等效行,并删除已删除的行。我还在c#类中注释了一个名为TryParse的函数,因为据我所知,没有使用过它,我们试图减少一点点。它现在似乎在使用该东西的时候失败了一些,但不是全部。我真的不知道在改变之前它是否会失败。

我不需要回答究竟发生了什么 - 我怀疑这会对代码块和诸如此类的东西进行过多的评论。大多数情况下,我希望有人可以给我一个通用指针或两个“啊,这个错误信息通常意味着”变化,所以我不是完全失明的飞行(尽管如果有人能够拿出更多比根据我给出的信息,这将是伟大的。)

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

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

(一个物化器只是使对象实例其他中取出的东西,在这种情况下由读者读取数据)

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

但是,听起来你可能在工作中有自定义的物化器(可能继承了EFExtensions,因此你得到他们的错误信息),在这种情况下答案可能在你的物化器代码中。