Настройка Enterprise Library 5.0 Блок доступа к данным
Я пытаюсь выяснить, как настроить корпоративную библиотеку 5.0 Блок доступа к данным. При запуске моего юнит-теста я получаю следующую ошибку:
Microsoft.Practices.ServiceLocation.ActivationException was caught
Message=Activation error occured while trying to get instance of type Database, key "PokerAdviserProvider"
InnerException: Microsoft.Practices.Unity.ResolutionFailedException
Message=Resolution of the dependency failed, type = "Microsoft.Practices.EnterpriseLibrary.Data.Database", name = "PokerAdviserProvider".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The type Database cannot be constructed. You must configure the container to supply this value.
Строка кода, где я получаю это:
var db = DatabaseFactory.CreateDatabase("PokerAdviserProvider");
App.config:
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
</configSections>
<dataConfiguration defaultDatabase="PokerAdviserProvider" />
<connectionStrings>
<add name="PokerAdviserProvider" connectionString="server=(localhost);Initial Catalog=PokerAdviser;uid=abc;pwd=xyz"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Я немного погуглил и нашел несколько ответов, что эти настройки также должны быть помещены в app.Config моего проекта unittest, но это не имело значения.
Я немного застрял здесь, поэтому любая помощь высоко ценится.
Редактировать:
Я ссылался на правильные DLL (те, что из Program Files, а не из исходного кода), так что это тоже не проблема.
3 ответа
Наконец-то разобрался. Я использую DAAB в библиотеке классов моего веб-сервиса и подумал, что мне нужно создать app.config в этой библиотеке. Должен был знать, что это не могло работать. Мой разум был, вероятно, далеко, когда делал это...
Я выполнил настройку в web.config веб-службы, и теперь все работает без сбоев.
Я наконец исправил эту проблему:
Error: Activation error occured while trying to get instance of type Database, key "<database name>"
Inner Exception: Resolution of the dependency failed, type = Microsoft.Practices.EnterpriseLibrary.Data.Database
Я работал под управлением VS 2010 на Windows 7, Enlib 5.0. Следующее сработало для меня. Хотел распространить слово вокруг
Убедитесь, что у вас есть правильная ссылка на Microsoft.Practices.Unity.dll
Получить последний пакет обновления для VS 2010