2012-02-22 4 views
2

Я использую XAF (инфраструктура DevExpress) для моего первого приложения (это CMS). Существует компонент Планировщик. И это сохраняет повторяемость события как xml. Например:Избегайте разбора полей xml в базе данных

<RecurrenceInfo Start="02/21/2012 09:00:00" End="02/28/2012 11:30:00" Id="e8507496-2be9-4bde-90a6-9eeea98fdc5a" Range="2" /> 

Это Range перечисление (но есть и другие перечисления существуют):

public enum RecurrenceRange { 
     NoEndDate, 
     OccurrenceCount, 
     EndByDate 
    } 

Кроме того, у меня есть другое приложение (ASP.NET MVC). Мне нужно выбрать событие для определенной даты или периода (сегодня, завтра, в текущем месяце и т. Д.).

Pproblem в том, что в таблице будет 10000 (например) записей, тогда мне нужно разобрать их все, чтобы найти событие для даты запроса. Я думаю, что это сокращение производительности.

Какое решение вы видите?

Я думаю сделать следующее: когда событие создано (в CMS), затем добавьте в таблицу постоянные поля и программно заполните их.

Как лучше создавать поля для хранения этих данных?

И еще один вопрос. Например, событие будет проходить в течение недели в 5 часов и в 8 часов. Планировщик создаст две записи в таблице:

id  EventName  RecurrenceInfo  Description  //otherfields 
1  event1   xml1   description1 
2  event1   xml2   description1 

Проблема в том, что планировщик создать еще один записи и все поля равна кроме RecurrenceInfo. Я думаю, чтобы создать еще один столбец идентификаторов и присвоить одинаковое значение всем повторяющимся записям.

Спасибо и извините мой английский.

ответ

2

Вы можете сделать Xml typed column и использовать на следующие QUERY

select 
    (list of fields) 
from 
    MyTable 
where 
    MyXmlField.value('(/root[Start])', 'datetime') > '01.01.2001' 
+0

Тип поля RecurrenceInfo является NVARCHAR, и я не могу изменить его. – user348173

+0

вы можете добавить drigger и поместить xml в свою другую таблицу с помощью столбца XML там или проанализировать XML и поместить в таблицу с столбцами столбца Start End datetime –

Смежные вопросы