DDay ical - сохранение данных о событиях в базе данных с помощью Nhibernate

Моему приложению нужна информация календаря, и я хотел бы использовать формат / схему, совместимую с.ical, чтобы она могла интегрироваться с другими календарными системами.

DDay iCal, кажется, единственная доступная библиотека.Net, которая делает это.

Однако я не вижу способа сохранить объекты в базе данных. Я использую Nhibernate, поэтому я хотел бы естественный способ сделать это.

Кто-нибудь уже сделал это? Я что-то упустил в библиотеке DDay iCal? Какие-либо предложения?

Является ли мой единственный вариант изменения исходного кода?

1 ответ

( Не используйте dday.ical; используйте ical.net. Он содержит много улучшений производительности и исправлений.)

Я ничего не знаю о NHibernate, но icalendar - это формат сериализации. Вы можете просто создать сериализованный текст, представляющий ваш календарь (ы) и их события.

Вот рабочий пример из вики-сайта ical.net:

var now = DateTime.Now;
var later = now.AddHours(1);

//Repeat daily for 5 days
var rrule = new RecurrencePattern(FrequencyType.Daily, 1) { Count = 5 };

var e = new Event
{
    DtStart = new CalDateTime(now),
    DtEnd = new CalDateTime(later),
    RecurrenceRules = new List<IRecurrencePattern> { rrule },
};

var calendar = new Calendar();
calendar.Events.Add(e);

var serializer = new CalendarSerializer(new SerializationContext());
var serializedCalendar = serializer.SerializeToString(calendar);

Это создаст сериализованный текст, который можно сохранить в базе данных, используя любую среду, которую вы пожелаете. Сериализованный текст будет выглядеть примерно так:

BEGIN: VCALENDAR
VERSION:2.0
PRODID: -//github.com/rianjs/ical.net//NONSGML ical.net 2.1//EN
BEGIN:VEVENT
DTEND:20160704T172520
DTSTAMP:20160704T162520
DTSTART:20160704T162520
RRULE:FREQ=DAILY;COUNT=5
SEQUENCE: 0
UID: f4693a88-0a57-4761-b949-8822b8a507d2
END:VEVENT
END:VCALENDAR
Другие вопросы по тегам