2009-09-18 48 views
0

我大致遵循excellent series of blog posts by Kazi Manzur Rashid作爲學習練習來學習如何實現一些新的(至少對我而言)設計模式,但是我從一開始就遇到了麻煩。ArgumentException創建從ObjectContext繼承的對象的實例

我基本上覆制了他對DatabaseRepositoryBaseRepositoryBaseTests類的代碼,但是當我嘗試運行測試,我得到一個錯誤信息說

Unable to create instance of class Booking.Infrastructure.EntityFramework.Repositories.Tests.RepositoryBaseTests. Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: Format of the initialization string does not conform to specification starting at index 0..

通過調試我已經驗證拋出異常的構造函數Database類,它看起來像這樣:

public Database(
    IConfigurationManager configurationManager, 
    string connectionstringName) 
: base(
    GetConnectionString(configurationManager, connectionstringName), 
    "BookingEntities") 
{ // Nothing happens here } 

調用base構造函數時,引發錯誤,並且如果我硬-code我目前發送的值,它是這樣的:

: base("Dummy connStr", "BookingEntities") 

爲什麼不這項工作?

回答

0

「Dummy connStr」不是有效的EF連接字符串。

有效EF連接字符串的樣子:

connectionString="metadata=res://*/Data.Model.csdl|res://*/Data.Model.ssdl|res://*/Data.Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=SERVERNAME\SQLDEV2008;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=True"" 
+0

確定。那麼,我可以弄清楚連接字符串不是一個有效的字符串,但是我認爲它應該能夠正常工作,就像它在文章中的例子一樣。無論如何,我還沒有建立數據庫,所以我沒有真正的連接字符串。是否有任何(簡單)的方法來建立一個虛擬字符串,它具有所有必要的部分,但實際上不會做任何事情? – 2009-09-18 22:16:25

+0

只需使用Northwind.mdb或其他演示數據庫。 – 2009-09-19 00:18:31

+0

問題是我正在做這個單元測試我的倉庫 - 我根本不想連接到數據庫,只是看到倉庫從'Database'對象中獲得正確的東西。 – 2009-09-19 09:37:48