Я ищу подход к автоматической генерации записи каждый раз, когда класс, который у меня есть, сохраняется в базе данных, без триггеров или функций базы данных.Автоматическое создание записи для истории объекта при его сохранении
Мой Classe Деталь что-то подобное
/// <summary>
/// Modelo de representação do Item (Produto)
/// </summary>
[Table("Item")]
public class Item : History
{
/// <summary>
/// Id único gerador pelo sistema
/// </summary>
[Key]
public long Id { get; set; }
/// <summary>
/// Nome do produto
/// </summary>
public string Name { get; set; }
/// <summary>
/// Código de barras
/// </summary>
public string BarCode { get; set; }
/// <summary>
/// Código da imagem do produto na base de dados
/// </summary>
public long Image_Id { get; set; }
}
Мой репозиторий класс Предмет имеет вставку упорствовать его. Как что
/// <summary>
/// Repositório do objeto Item
/// </summary>
public class ItemRepository : BaseRepository<Item>
{
#region Constructors
/// <summary>
/// Inicializa o repositório de Item
/// </summary>
/// <param name="context">Contexto usado em sua inicialização</param>
public ItemRepository(DbContext context) : base(context)
{
}
#endregion
#region Methods
public override void Insert(Item entity)
{
base.Insert(entity);
}
#endregion
}
Мой вопрос: Как я могу генерировать запись в моей objetc Item__History, который представляет собой зеркало для моего объекта элемента в этой Momento? Каждый раз, когда я обновляю этот объект objetct, мне нужен метод моего репозитория (update), чтобы сгенерировать еще одну вставку в Item__History, создав другой объект, который отражает этот точный момент Item.
Позже, я могу пойти Item__History и проверить все состояния этого класса. Item уже есть.
Я могу сделать это, создав модель для Item__History (нормально, она создана) и создала класс репозитория для Item__History, а во время вставки/обновления элемента внутри класса репозитория я создаю экземпляр Item__History, скопирую все значения в этот новый экземпляр и вызвать Item__Repository для его вставки. Я не уверен, что это лучший подход, так как у меня будет много классов, которые я хочу управлять историей, и не хочу иметь много классов и репозиториев «XXX___History».
Извините, кстати, если вопрос не подходит. Надеюсь, кто-то это поймет.
Выглядит хорошо, но сущность на втором примере кода вы добавите, это предмет. Когда вы вызываете новый GenericHistoryRepository(). Add (entity), вы отправляете Item вместо Item__History. У них небольшая разница между обоими (возможно, я делаю это неправильно). Класс __History имеет XXXX_Id (например, Item_Id), который ссылается на идентификатор свойства Item (чтобы узнать, для какого элемента находится эта история). Правильно ли я спрашиваю? –
Используете ли вы единую систему как историю для всех других лиц? _ «У меня будет много классов, которые я хочу управлять историей, и не хочу иметь много классов и репозиториев« XXX___History ».« Я имею в виду, что у каждого из них XXX есть XXX_History. В этом случае общий репозиторий истории - хороший ход в более раннем случае. Вам нужно создать собственную логику, где вы проверяете, какой именно идентификатор этого элемента. Но эта логика не должна быть интегрирована с репозиториями. Может быть добавлен в бизнес-логику –
Также в методе вставки вы можете создать новую Item_history и отправить вместо нее сущность. Но я не знаю, хорошая идея добавить эту логику в репозитории. –