Как правильно делать 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