2013-03-05 3 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 лишен. Как я могу ввести Db в класс обслуживания без использования SetAppHost?

Любые идеи?

ответ

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