Я разрабатываю веб-сайт на C # / NHibernate с системой личных сообщений. Я хотел бы, чтобы администраторы проверяли, было ли когда-либо прочитано сообщение пользователем, и вместе выделяли те сообщения, которые еще не были прочитаны пользователями. Для достижения обоих я нашел два варианта:
Вариант 1
class Message
{
DateTime? Read;
}
где Read==null
означает еще не прочитано
Вариант 2
class Message
{
DateTime Read;
}
где Read==default(DateTime)
(1 января, 1:00, 0:00:00) означает, что еще не прочитано.
В университете меня учили использовать значение NULL
для обработки всех специальных случаев, а также использование типа Nullable кажется хорошим выбором, поскольку оно выглядит проще для запроса непрочитанных сообщений, проверяя, являются ли они NULL
или нет.
Но использование обнуляемых типов, по крайней мере, включает в себя упаковку и распаковку в коде с понижением производительности. С другой стороны, запрос непрочитанных сообщений означает сравнение значения (но оно может быть проиндексировано)
Мой вопрос
Какой вы предлагаете подход для этого? Что бы лучшие практики предложили в этом случае?