Я чрезвычайно новичок в NHibernate, поэтому извиняюсь, если мне не хватает чего-то тривиального здесь. В настоящее время я работаю над книгой под названием "NHibernate 3 Beginners Guide" из packtpub. В основном я слежу за указаниями в книге. Когда я говорю в основном, я расходился с использованием MySQL вместо MSSQL и использовал NuGet, а не загружал двоичные файлы вручную.
Я сейчас в главе 2, которая является первой настоящей главой кодирования. В этой главе я создаю простое приложение WPF для создания моей схемы базы данных с помощью нажатия кнопки. Я уже создал несколько POCO для классов Product
и Category
, указанных в главе. Через NuGet я добавил следующие ссылки:
- MySQL.Datali >
- 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 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 manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Вот "Журнал Fusion", если это помогает:
=== 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.
Я пробовал следующее и теперь немного потерял:
- Попытка обновления Iesi.Collections через NuGet, но это не означает, что для NHibernate нет совместимой версии.
- Загрузка двоичных файлов для NHibernate и FluentNhibernate и ссылки на них вручную.
- Вытягивание исходных образцов из книги и копирование через DLL в образце. Это дало мне другую ошибку, которую я еще не исследовал достаточно далеко, чтобы задавать вопросы.
У меня есть два вопроса:
- Во-первых, почему пакеты NuGet попытаются найти версию 4. * dll, когда версии, которые отправляют, указывают на 1. *?
- Какие еще вещи я должен попытаться получить, чтобы не получить весь источник и создать локально? Я немного потерял и буду любить другие материалы.
Спасибо заранее!