2012-02-02 48 views

回答

4

攔截器。在數據庫或驅動程序級別有沒有類似的技術?

在mongodb c#驅動程序和mongodb中也沒有這樣的機制。 要實現您的需求,您可以簡單地將所有SaveInsert,原子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方法。

注意:所有這些代碼沒有經過測試,它只是我如何看待它可以完成。

相關問題