Вопрос

Как правильно делать esq update запрос на c# c привязкой к одной культуре, но не убирая признак локализуемой строки

у меня есть процесс, который синхронизирует РУССКИЕ названия контрагентов, проблема в том, что если мы заходим под английской культурой, то название на английском, становятся на русском, после выполнения моего процесса, как задать привязку к культуре в esq запросе на шарпе

пытался использовать метод ниже, но это помогает брать значения под определенной культурой(в данном случае ру), а с обновлением не работает

 

esqAccount.SetLocalizationCultureId(new Guid("1a778e3f-0a8e-e111-84a3-00155d054c03"));

что бы было понятно каким образом я делаю апдейт колонки прикладываю код ниже 

var esqAccount = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Account");
esqAccount.AddAllSchemaColumns();
//устанавливаем RU
esqAccount.SetLocalizationCultureId(new Guid("1a778e3f-0a8e-e111-84a3-00155d054c03"));
var accounts = esqAccount.GetEntityCollection(UserConnection);
foreach (var accountItem in accounts) {
               accountItem.SetColumnValue("Name", description);
              accountItem.Save(false);
}

 

Нравится

3 комментария
Лучший ответ
EntitySchemaQuery esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Account");
esq.AddAllSchemaColumns();
 
esq.Filters.LogicalOperation = LogicalOperationStrict.Or;
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", id));
EntityCollection entities = esq.GetEntityCollection(UserConnection);
 
var localizableString = new LocalizableString();
localizableString.SetCultureValue("ru-RU", "Синий");
localizableString.SetCultureValue("en-US", "Blue");
 
foreach (Entity entity in entities)
{
	entity.SetColumnValue("Name", localizableString);
	entity.Save(false);
}

 

EntitySchemaQuery esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Account");
esq.AddAllSchemaColumns();
 
esq.Filters.LogicalOperation = LogicalOperationStrict.Or;
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", id));
EntityCollection entities = esq.GetEntityCollection(UserConnection);
 
var localizableString = new LocalizableString();
localizableString.SetCultureValue("ru-RU", "Синий");
localizableString.SetCultureValue("en-US", "Blue");
 
foreach (Entity entity in entities)
{
	entity.SetColumnValue("Name", localizableString);
	entity.Save(false);
}

 

у setculturevalue нет перегрузки с строкой, верно будет подать следующий объект 

CultureInfo cultureRu = CultureInfo.GetCultureInfo("ru-RU");

качестве культуры первым аргументом

Dima Avdoshin,

 

да, так верно

localizableString.SetCultureValue(new CultureInfo("ru-RU"), "Синий");

пример из документаций https://academy.terrasoft.ru/docs/developer/back-end_development/localizable_resources/operatsii_s_lokalizuyemymi_resursami#title-2174-7

 

Показать все комментарии