База данных в первую очередь означает, что вы должны добавить все поля в базу данных вручную, и AFAIK нет наследования. Вы можете написать скрипт SQL, добавляющий эти столбцы. Как сказал Махьяр. Но вам все равно не хватало бы наследства.
Или сначала переключитесь на код. Затем вы можете определить интерфейс и обработать аудит в коде. Как показано здесь .
Я, например, использую этот интерфейс:
/// <summary>
/// Adds auditing properties to an entity.
/// </summary>
public interface IAuditedEntity
{
/// <summary>
/// Date and time of the entity's creation. Usually in UTC.
/// </summary>
/// <remarks>Best set via a <see cref="ITimeProvider"/>.</remarks>
DateTime DateCreated { get; set; }
/// <summary>
/// Identification who created this instance.
/// </summary>
/// <remarks>Best set via a <see cref="ICurrentUserIdProvider"/>.</remarks>
string CreatedBy { get; set; }
/// <summary>
/// Date and time of last modification. Usually in UTC.
/// </summary>
/// <remarks>Best set via a <see cref="ITimeProvider"/>.</remarks>
DateTime? DateModified { get; set; }
/// <summary>
/// Last one modifiying this instance.
/// </summary>
/// <remarks>Best set via a <see cref="ICurrentUserIdProvider"/>.</remarks>
string ModifiedBy { get; set; }
}
Интерфейс провайдера пользователя определяется следующим образом:
/// <summary>
/// Interface for providing the current user's id.
/// </summary>
public interface ICurrentUserIdProvider
{
/// <summary>
/// Get the id of the curent user.
/// </summary>
/// <returns></returns>
string GetCurrentUserId();
}
В целях тестирования вы теперь можете использовать окружающий контекст / сервис , предоставляющий текущему пользователю или любому пользователю, который вам необходим для проверки вашей логики.