2013-03-05 2 views
1

오늘 ServiceStack을 사용하기 시작했습니다. 그래서 내가 완전히 잘못된 것을하고 있는지 알려주세요.IDbConnectionFactory를 서비스 클래스에 삽입

내가하는 나는 두 가지 문제가 있습니다이 코드

[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); 
    } 
} 

을 사용하고, 내 서비스 클래스로 DB를 주입하는 것을 시도하고있다 :

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) 

인가 : 1) 나는 예외가 무엇입니까 이 문제를 쉽게 해결할 수있는 방법이 있습니까? 그리고 테스트를 위해 SQLite가 실제로 필요합니까? 가짜 객체를 사용할 수 있습니까?

2) 컴파일러에서 service.SetAppHost (appHost)에 대해 경고합니다. SetAppHost가 비난되었습니다. SetAppHost를 사용하지 않고 서비스 클래스에 Db를 주입하려면 어떻게해야합니까?

아이디어가 있으십니까?

답변

1

Sqlite와 (과) 플랫폼 비 호환성 문제가있는 것 같아서 사용중인 컴퓨터에 맞는 Sqlite 패키지를 사용하고 있는지 확인하십시오. service.SetAppHost(appHost)deprecated message에 관해서는

는 IAppHost도 IResolver를 구현 service.SetResolver(appHost)으로 사용, 그래서를 사용했다.

+0

고마워요! OrmLite.Sqlite를 사용하면 NuGet이 버전 1.0.84를 설치했습니다. 그러나 OrmLite는 버전 1.0.82를 찾고있었습니다. 작동시키기 위해 필수 버전으로 업데이트되었습니다. – user356247

관련 문제