2015-09-09 3 views
1

Описание:
Я работаю на словарь для МНОГОЯЗЫЧНЫЕ, MultiOrganizationCMS.Как я могу программно создать еще один столбец в Resx файле

В настоящее время мы используем решение для базы данных (Sql Server), но из-за большого трафика базы данных мы ищем альтернативное решение, и я нашел файлы .resx.

Здесь мы будем создавать файл .resx программно и один .resx файл/Язык. В каждом файле .resx мы хотим добавить organizationId. Вы можете увидеть файл .resx для английского языка ниже.

Мы хотим, чтобы эта структуру в .resx

 
Name Value  Comment     OrganizationId 
About About  this file is for english   1 
Login Login  this file is for english   2 

Сценарий является то, что, когда в моем ОЙ языки добавляется я буду создавать файл ресурсов с ним, который будет содержать словарь (английский ключ, что язык значение) для языка.

Теперь все прошло бы как запланировано, если одно слово имело бы один смысл, но есть требование, чтобы Two organization can one have different meaning для одного слова.

например слово hello будет иметь значение abc для организации1, и оно будет иметь значение abc2 для организации2.

Мой вопрос:
1.How я могу сделать это, используя .resx файл и, если его не возможно, используя файл .resx то, что является наиболее эффективным (скорость, охранение, гибкость) чередуются для этого сценария.

Мой код:
В настоящее время я пытаюсь this образец:

   // Define a resource file named CarResources.resx. 
      using (ResXResourceWriter resx = new ResXResourceWriter(@"D:\VSProjects\CreateResourceFile\CreateResourceFile\CarResources.resx")) 
      { 

       resx.AddResource(new ResXDataNode("About", "About"){ Comment = "this file is for english" }); 
       resx.AddResource("Login", "Login"); 
       resx.AddResource("News", "News"); 
       resx.AddResource("Headline", "Headline"); 
       resx.AddResource("Information", SystemIcons.Information); 

      } 
+2

Значение идентификатора организации не относится к файлу ресурсов. – tdbeckett

+0

@tdbeckett да, эта организацияId является основной проблемой, как я могу добавить этот столбец OrganizationId в файл .resx – Dragon

ответ

4

Resx файлы имеют строгую схему и не включает в себя дополнительное поле, которое вы хотите. Поэтому, даже если вам удастся добавить файл (например, с обычным XML-интерфейсом), стандартные методы ресурсов .Net, вероятно, не смогут обработать такие измененные файлы.

В зависимости от ваших потребностей вы можете использовать полностью собственный XML (LINQ-to-XML обеспечивает простой способ создания/чтения XML-документов) или если вы действительно хотите использовать файлы resx - файлы разделов по организации (в дополнение к язык)

text.org1.en-us.resx 
text.org2.en-us.resx 
text.org1.fr.rest 
+0

Thnks для быстрого и эффективного ответа. В настоящее время на нашей CMS работает более 150 организаций/веб-сайтов, поэтому я думаю, что файл секционирования не будет хорошей идеей, потому что я думаю, что создание и поддержание большого количества динамического файла resouce является головной болью. На данный момент я очень впечатлен идеей linq для xml. – Dragon

+0

@Sadaquat Сторона примечания: ответ предполагает, что вы уже рассмотрели более традиционные решения для трафика БД, такие как кэширование в памяти (с использованием классов .Net) или даже распределенное кэширование (memcached, redis, ...). Переключение на файлы на основе дисков не было бы моим первым выбором ... –

+0

Что вы говорите о создании своего собственного читателя/писателя. Для чего потребуется больше усилий. 1.Создание пользовательского считывателя/записи ресурсов для файлов .resx или 2. Создание файла xml от начала до конца? – Dragon