1
我想在每次對該文檔進行保存或更新操作時自動更新mongo文檔上的LastUpdatedOn字段。我可以自動填充MongoDB中的LastUpdated字段(使用C#驅動程序)
而不是把這個負擔放在保存/更新的每一段代碼上,有沒有辦法自動做到這一點(我正在使用C#驅動程序)。
例如,在nHibernate中,你可以使用interceptors。在數據庫或驅動程序級別有沒有類似的技術?
我想在每次對該文檔進行保存或更新操作時自動更新mongo文檔上的LastUpdatedOn字段。我可以自動填充MongoDB中的LastUpdated字段(使用C#驅動程序)
而不是把這個負擔放在保存/更新的每一段代碼上,有沒有辦法自動做到這一點(我正在使用C#驅動程序)。
例如,在nHibernate中,你可以使用interceptors。在數據庫或驅動程序級別有沒有類似的技術?
攔截器。在數據庫或驅動程序級別有沒有類似的技術?
在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方法。
注意:所有這些代碼沒有經過測試,它只是我如何看待它可以完成。