Как правильно делать 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);
}
Нравится
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
