Разрабатывал приложение, которое автоматически обрабатывает аудит.
Многие из моих моделей EF наследуют FullAudited
класс.
public class FullAudited<TPrimaryKey> : Entity<TPrimaryKey>, IFullAudited, ISoftDelete
{
public DateTime CreationTime { get; set; }
public string CreatorUserId { get; set; }
public DateTime? ModificationTime { get; set; }
public string ModifierUserId { get; set; }
public DateTime? DeletionTime { get; set; }
public string DeleterUserId { get; set; }
public bool IsDeleted { get; set; }
}
Видите, у нас есть CreatorUserId
, ModifierUserId
, DeleterUserId
.
Представьте себе ситуацию, в которой приложение работает годами, и у нас есть множество записей в базе данных - каждое из этих полей содержит строку GUID, такую как 5a7618ee-d279-4df9-9fe0-23f7df3053bd
.
Мы могли былегко переключаться с String
на long
, конечно, но я думаю, что есть веская причина, почему Microsoft разработала его так: String
.
Так что если мы оставим UserID
как String
- для такого приложения, безусловно, потребуется значительно больше памяти .
Похоже, тип по умолчанию не соответствует нашим потребностям, верно?