перехватчики.Существует ли подобный метод на уровне базы данных или драйвера?
Нет такого механизма в драйвере mongodb c # и в mongodb.Для достижения ваших потребностей вы можете просто обернуть все Save
, Insert
, атомарные Update
методы и установить поле LastUpdatedOn
там.
Например, у вас может быть базовый класс для вашего хранилища, службы, где бы вы ни заключали свои методы сохранения:
public abstract class BaseMongoService<T> where T : BaseDocument
{
protected abstract MongoCollection Items { get; }
public virtual SafeModeResult Save(T document)
{
document.LastUpdatedOn = DateTime.Now;
return Items.Save(document);
}
public virtual void Update(IMongoQuery query, IMongoUpdate update)
{
update = update.Set("LastUpdatedOn", DateTime.Now);
Items.Update(query, update);
}
}
, тогда вам нужно будет наследовать все ваши документы от BaseDocument
(или заставьте их реализовать некоторый интерфейс), чтобы добавить ограничение, что все документы должны содержать поле LastUpdatedOn.
public class BaseDocument
{
public DateTime LastUpdatedOn {get;set;}
}
Затем просто наследуйте все классы доступа к данным выше одного и используйте методы Save, Update из базового класса.
Примечание : весь этот код не был проверен, просто, как я вижу, это можно сделать.