2016-01-29 1 views
2

Недавно мы обновили DLL ServiceStack в нашем проекте с версии 4.0.38 до версии 4.0.52. Мы делаем вызов, как это:ServiceStack Redis v4.0.52 IRedisClient.Db setter не работает должным образом

var clientManager = new BasicRedisClientManager("127.0.0.1"); 
var client = clientManager.GetClient(); 
client.Db = 3; // set the DB to 3 
var item = DateTime.Now.Ticks.ToString(); 
client.AddItemToList("test_q", item); 

В версии 4.0.38 этот вызов правильно привел к элементу в списке test_q в DB 3 (select 3). Однако, когда мы обновили до версии 4.0.52, настройка БД на 3 больше не работает, и элемент заканчивается в БД по умолчанию 0.

Является ли это ошибкой или есть изменения в API?

ответ

3

Это изменение было изменено in this commit, из-за которого GetClient() теперь возвращает уже подключенного клиента. Это изменение доступно из v4.0.53, теперь это available on MyGet.

Один из способов заставить изменения базы данных к уже подключенному клиенту, чтобы использовать явный ChangeDb() API, например:

((RedisClient)client).ChangeDb(3); 

Другим вариантом заключается в определении Db в строке подключения, например:

var clientManager = new BasicRedisClientManager("127.0.0.1?db=3");