ASP.Net Core MVC: лучший способ создания индекса сообщений в БД EFC
уважаемые товарищи! Пишу небольшой форум в ASP.Net Core (.Net 5 (возможно далее мигрирую на .Net 6)). Есть модель сообщений:
public class ForumMessageModel
{
#region Позиционирование сообщения
/// <summary>
/// Идентификатор сообщения
/// </summary>
[Key]
public int Id { get; set; }
/// <summary>
/// Идентификатор темы
/// </summary>
public int TopicID { get; set; }
/// <summary>
/// Номер сообщения в теме
/// </summary>
public ulong MessageNum { get; set; }
#endregion
#region Сообщение
/// <summary>
/// Ссылка на сообщение-родитель (это сообщение -- ответ)
/// </summary>
public int ReplyTo { get; set; }
/// <summary>
/// Сообщение
/// </summary>
public string Text { get; set; }
#endregion
#region Meta-данные сообщения
/// <summary>
/// Дата публикации
/// </summary>
public DateTime PublishDate { get; set; }
/// <summary>
/// ID автора
/// </summary>
public string Author { get; set; }
/// <summary>
/// Дата последнего изменения
/// </summary>
public DateTime ModifyDate { get; set; }
#endregion
#region Благодарности
/// <summary>
/// Благодарности (в формате зашифрованного JSON)
/// </summary>
public string Thanks { get; set; }
#endregion
}
Как вы поняли, наверняка, из модели Id текущее в типе int (что прекрасно генерируется EFCore 5.0.11, в отличие от ulong).
А теперь, собственно, проблема: при увеличении числа сообщений (а люди оочень любят трепаться по делу и нет) рано или поздно, int исчерпает себя. Понятное дело, что мне хочется обезопасить проект, чтобы потом не пришлось переписывать. Вопрос: в каком типе и как лучше создавать индекс, чтобы и EFCore сам создавал его, и этой ошибки не было.
Смотрю на Мелкософт: он в identity ставит string-овские ID. Может их? Тогда как их генерировать?
И ещё, посоветуйте, пожалуйста, хороший и бесплатный Markdown-редактор для проекта.
Спасибо!
Ответы (1 шт):
[Key , DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
https://ru.wikipedia.org/wiki/GUID 2^128 вариантов, более чем достаточно