2013-03-05 101 views
1

我今天開始使用ServiceStack。所以,讓我知道我是否做了完全錯誤的事情。將IDbConnectionFactory注入服務類

我試圖注入Db的到我的服務類,爲此我使用這個代碼

[TestFixture] 
public class UserServiceTests 
{ 
    private UserService service; 

    [SetUp] 
    public void SetUp() 
    { 
     var appHost = new BasicAppHost(); 
     var dbFactory = new OrmLiteConnectionFactory(":memory:", false, SqliteDialect.Provider); 
     appHost.Container.Register<IDbConnectionFactory>(dbFactory); 
     service = new UserService(); 
     service.SetAppHost(appHost); 
    } 

    [Test] 
    public void Calling_post_method_with_valid_User_saves_it_in_database() 
    { 
     var User = new User { Name = "Acme Limited" }; 
     var id = service.Post(User); 
     Assert.AreEqual(1, id); 
    } 
} 

有兩個問題: 1)我得到異常:

Could not load file or assembly 'System.Data.SQLite, Version=1.0.82.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

是有一個簡單的方法來解決這個問題?我們是否真的需要SQLite進行測試,是否有Fake對象可用?

2)編譯器警告 - service.SetAppHost(appHost)。 SetAppHost被刪除。 如何在不使用SetAppHost的情況下將Db注入到服務類中?

任何想法?

回答

1

聽起來你有一個與Sqlite平臺不兼容的問題,確保你的機器使用了正確的Sqlite包。

至於service.SetAppHost(appHost)deprecated message說,使用service.SetResolver(appHost)IAppHost還實現IResolver,所以使用它。

+0

謝謝!使用OrmLite.Sqlite,NuGet安裝版本1.0.84。但OrmLite可能正在尋找版本1.0.82。更新到需要的版本才能正常工作。 – user356247 2013-03-06 17:04:09