DDay ical - 使用 Nhibernate 将事件数据保存到数据库

本文关键字:数据 保存 数据库 事件 ical 使用 Nhibernate DDay | 更新日期: 2023-09-27 18:35:49

我的应用程序需要日历信息,我想使用与 .ical 兼容的格式/架构,以便它可以与其他日历系统集成。

DDay iCal似乎是唯一可以做到这一点的.Net库。

但是,我没有看到任何将对象保存到数据库的方法。我正在使用Nhibernate,所以我想要一种自然的方式来做到这一点。

有人已经这样做了吗?我在DDay iCal库中缺少某些内容吗?有什么建议吗?

我唯一的选择是修改源代码吗?

DDay ical - 使用 Nhibernate 将事件数据保存到数据库

(不要使用 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);

这将发出 ical-serialized 文本,可以使用您想要的任何框架存储在数据库中。序列化文本将如下所示:

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