我想弄清楚如何配置企业库5.0数据访问应用程序块。当运行我的unittest时,我得到以下错误:
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>
我在谷歌上搜索了一下,发现了一些答案,这些设置也应该放在我的unittest-project的app.Config中,但这并没有什么不同。
我有点困在这里,所以任何帮助都是非常感谢的。
编辑:我引用了正确的dll(那些从程序文件,而不是从源代码),所以这不是问题。
我终于解决了这个问题:
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
我在windows 7上运行VS 2010, Enlib 5.0。下面的方法对我很有效。想要传播这个词
确保你有正确的引用Microsoft.Practices.Unity.dll
获取VS 2010的最新服务包
终于想通了。我在webservice的类库中使用DAAB,并认为我必须在该库中创建一个app.config。我应该知道这行不通的。当我这样做的时候,我的思想可能已经很远很远了……
我在网上做了配置。
参考这两个好帖子post1 &post2关于企业库配置