我对 NHibernate 非常陌生,所以如果我在这里遗漏了一些琐碎的事情,我深表歉意。我目前正在阅读 packtpub 的一本名为“NHibernate 3 Beginners Guide”的书。我主要是按照书中的指示进行的。当我说的主要是我使用 MySQL 而不是 MSSQL 并一直使用 NuGet 而不是手动下载二进制文件时,我已经分歧了。
我现在在第 2 章,这是第一个真正的编码章节。在本章中,我将构建一个简单的 WPF 应用程序,通过单击按钮来构建我的数据库架构。我已经为本章中指定的Product
和类构建了一些 POCO。Category
通过 NuGet,我添加了以下参考:
- MySQL.数据
- NHibernate(作为自动解析的依赖项,Iesi.Collections)
- 流畅的 NHibernate
当我单击按钮来构建我的数据库时,将执行以下代码块:
private const string connString = "string omitted for brevity";
private void btnCreateDatabase_Click(object sender, RoutedEventArgs e)
{
Fluently.Configure().Database(MySQLConfiguration.Standard.ConnectionString(connString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ProductMap>())
.ExposeConfiguration(CreateSchema)
.BuildConfiguration();
}
单击按钮后,我收到以下异常(FileLoadException
):
外部异常消息:Could not load file or assembly 'Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
内部异常消息:Could not load file or assembly 'Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
如果有帮助,这里是“Fusion Log”:
=== Pre-bind state information ===
LOG: User = Borealis\Frito
LOG: DisplayName = Iesi.Collections, Version=1.0.1.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
(Fully-specified)
LOG: Appbase = file:///C:/Users/Frito/documents/visual studio 2010/Projects/NH3BeginnersGuide/Chapter2/App/Sample.UI/bin/Debug/
LOG: Initial PrivatePath = NULL
Calling assembly : NHibernate, Version=3.3.1.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Frito\documents\visual studio 2010\Projects\NH3BeginnersGuide\Chapter2\App\Sample.UI\bin\Debug\Sample.UI.vshost.exe.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 1.0.1.0 redirected to 4.0.0.0.
LOG: Post-policy reference: Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
LOG: Attempting download of new URL file:///C:/Users/Frito/documents/visual studio 2010/Projects/NH3BeginnersGuide/Chapter2/App/Sample.UI/bin/Debug/Iesi.Collections.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
我尝试了以下方法,现在有点不知所措:
- 尝试通过 NuGet 升级 Iesi.Collections 但未能说明没有兼容的 NHibernate 版本。
- 下载 NHibernate 和 FluentNhibernate 的二进制文件并手动引用它们。
- 从书中提取源示例并复制示例中的 DLL。这给了我一个不同的错误,我还没有深入研究以提出问题。
我有两个问题:
- 首先,为什么 NuGet 包会在发布的版本指向 1.* 时尝试查找版本 4.* dll?
- 除了获取所有源代码并在本地构建之外,我还应该尝试哪些其他事情?我有点茫然,会喜欢其他一些输入。
提前致谢!