这是我的基本情况。我正在尝试使用 NHibernate 从数据库中获取信息,根据映射创建一些对象,对它们进行序列化,然后将序列化的对象移动到闪存组件上。没有构建错误发生,但是当我返回“序列化”对象时,它一直返回 null。在插入一些断点并逐步完成后,我意识到一切都在往南走。
我把我的断点放在这里:
var tasks = (List<CSH_Task>)persistanceManager.RetrieveAll<CSH_Task>(SessionAction.BeginAndEnd);
它进入我的 PersistanceManager 类,成功传递了我的 CSH_Task:
public IList<T> RetrieveAll<T>(SessionAction sessionAction)
{
/* Note that NHibernate guarantees that two object references will point to the
* same object only if the references are set in the same session. For example,
* Order #123 under the Customer object Able Inc and Order #123 in the Orders
* list will point to the same object only if we load Customers and Orders in
* the same session. If we load them in different sessions, then changes that
* we make to Able Inc's Order #123 will not be reflected in Order #123 in the
* Orders list, since the references point to different objects. That's why we
* maintain a session as a member variable, instead of as a local variable. */
// Open a new session if specified
if ((sessionAction == SessionAction.Begin) || (sessionAction == SessionAction.BeginAndEnd))
{
m_Session = m_SessionFactory.OpenSession();
}
// Retrieve all objects of the type passed in
ICriteria targetObjects = m_Session.CreateCriteria(typeof(T));
IList<T> itemList = targetObjects.List<T>();
// Close the session if specified
if ((sessionAction == SessionAction.End) || (sessionAction == SessionAction.BeginAndEnd))
{
m_Session.Close();
m_Session.Dispose();
}
// Set return value
return itemList;
}
这直接来自NHibernate 的一个旧示例(我对它非常陌生)它让我进入一个“无可用资源”页面,其中列出了这个
调用堆栈位置:
Iesi.Collections.DLL!Iesi.Collections.Generic.HashedSet.HashedSet() 第 18 行
源文件信息:
查找 'd:\CSharp\NH\NH_Hg\nhibernate\src\Iesi.Collections\Generic\HashedSet.cs' 的源。校验和:MD5 {d3 1c 6c 95 94 c0 cb d4 b5 8d 8c 42 c5 4a 37 b2}
文件 'd:\CSharp\NH\NH_Hg\nhibernate\src\Iesi.Collections\Generic\HashedSet.cs' 不存在。
在脚本文档中查找 'd:\CSharp\NH\NH_Hg\nhibernate\src\Iesi.Collections\Generic\HashedSet.cs'...
在项目中查找 'd:\CSharp\NH\NH_Hg\nhibernate\src\Iesi.Collections\Generic\HashedSet.cs'。
在项目中找不到该文件。
查看目录'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\'...
查看目录 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc\'...
查看目录'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl\'...
查看目录 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\'... 查看目录 'C:\Users\tackiean\Desktop\'...
查看目录 'E:\SmartMC\NHibernate\Required_Bins\'...
源位于“E:\SmartMC\NHibernate\Required_Bins\HashedSet.cs”。
确定校验和是否与以下位置匹配:
1:E:\SmartMC\NHibernate\Required_Bins\HashedSet.cs 校验和:MD5 {40 1b 39 7e 8f 4a 3f 6 11 41 88 70 9e 8f 8 f1} 校验和不匹配。
活动解决方案的调试源文件设置表明调试器不会要求用户查找文件:d:\CSharp\NH\NH_Hg\nhibernate\src\Iesi.Collections\Generic\HashedSet.cs。
调试器找不到源文件 'd:\CSharp\NH\NH_Hg\nhibernate\src\Iesi.Collections\Generic\HashedSet.cs'。
如果我继续单步执行它会返回我的代码,然后返回此处列出关于 DictionarySet.cs 的几乎相同的消息
我不是第一个在这台机器上为这个项目下载 NHibernate 的人,但我会想象如果它需要 HashedSet.cs/DictionarySet.cs 才能工作,它们会默认包含在内吗?我今天花了大约 7 个小时来寻找这个问题的答案,但我空空如也。我以前从未见过这样的错误。我认为它只是在寻找 NHibernate 需要的文件,但找不到,但这里还有其他事情吗?任何帮助将不胜感激。我希望这是一个合适的位置/格式清晰;我以前从来没有在这里问过问题,所以我希望这不是完全不合适的。