2009-10-12 81 views
3

我用我的项目NHibernate(2.0.1GA)。在运行时,我得到了如何调试NHibernate映射?

Invalid Cast (check your mapping for property type mismatches); 
[...] 

所以它只能说它无法施放任何东西。这有点不庄重。

我的映射文件非常大(主表大约有50个柱子和11个子集)。如何查找无效的投射而不检查其中的每一行与相应的类&表??

回答

1

获取pdbs(或只是获取源代码),并找出异常第一次被抛出的位置,然后在堆栈跟踪中回溯,直到看到它正在尝试投射的内容。

+0

也许你可以进一步解释一下。因为我对.NET相对比较陌生。 我知道pdbs所在的位置,但我该如何“找出异常首先被抛出的位置,并将其放回堆栈跟踪”?对不起,我很可能不喜欢... – 2009-10-12 13:01:17

+0

@ MAD9在Visual Studio中,当您调试时,您可以告诉IDE在抛出异常时中断。如果你有包含pdbs的话,它会在NH代码中破解,所以你可以看到异常发生。此外,Visual Studio中还有一个堆栈跟踪窗口,允许您查看为达到该点而采取的顺序。您可以双击序列中的任何行项目,它会跳回/转到该点,以便您可以在堆栈中查看该级别的信息。 – Joseph 2009-10-12 13:06:03

+0

这是否也适用于C#Express Edition? – 2009-10-12 13:07:28

0

当您运行特定请求时会发生这种情况吗?然后你有一个更受限制的嫌疑犯集:-):只有表格和列暗示...

我倾向于从请求中拿走表,发现哪些表有问题。 然后可能用于域同样的态度...


否则,如果它发生在你的NHibernate的验证所有的实体,您可以使用二分法来定位你的问题。