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