एक पूरी तरह से अलग दृष्टिकोण के रूप में, आप सजावट पैटर्न को अपने भंडारों के साथ उपयोग कर सकते हैं।
मैं
public interface IRepository<EntityType> where EntityType:IAuditably
{
public void Save(EntityType entity);
}
तब है कहो, हम अपने NHibernateRepository होगा:
public class AuditingRepository<EntityType>:IRepository<EntityType>
{
/*...*/
public void Save (EntityType entity)
{
entity.LastUser = security.CurrentUser;
entity.LastUpdate = DateTime.UtcNow;
innerRepository.Save(entity)
}
}
फिर, एक आईओसी का उपयोग कर:
public class NHibernateRepository<EntityType>:IRepository<EntityType>
{
/*...*/
public void Save (EntityType entity)
{
session.SaveOrUpdate(entity);
}
}
फिर हम एक लेखा परीक्षा भंडार हो सकता था फ्रेमवर्क (स्ट्रक्चर मैप, कैसल विंडसर, एन इंजेक्ट) आप इसे अपने शेष कोड के बिना सब कुछ बना सकते हैं यह जानकर कि आपने ऑडिटिंग चल रहा था।
बेशक
, तुम कैसे सोपानी संग्रह के तत्वों को ऑडिट पूरी तरह ...
स्रोत
2008-10-17 16:50:29
प्रत्येक उपयोगकर्ता किसी SQL खाते दे रही है या एकीकृत प्रमाणन का उपयोग करने वाले कामकाज/विकल्प हैं। आपके टेबल पर "LastUpdatedByUser" कॉलम ऑडिट किया जा सकता है और जब भी आप एक रिकॉर्ड अपडेट करते हैं तो उसे ऐप से भेज दें। ट्रिगर ऑडिट रिकॉर्ड को पॉप्युलेट करने के लिए उस कॉलम के मान का उपयोग कर सकता है। –