Geçmiş:LINQ denetim ve geçerli kullanıcı
ben insert için veritabanı denetimi yapmak gerekir bunun için bir web uygulaması var// siler güncellemeler (ve belki okur). LINQ'yi ORM'im olarak kullanıyorum. Web'de bulduğum bazı fikirleri kullanarak, ilişkili denetim tablolarına sahip olan varlıklarımı süslemek için özelliklerin bir yolunu buldum. Denetim tablosunun kendisi, geçerli kullanıcının kimliği ve adı, modifikasyon tipi, değişiklik zamanı ve işlemin başarılı olup olmadığı gibi alanlara ek olarak, aynı tabloları orijinal tabloyla aynı türlere dahil etmek zorundadır. Denetim, SubmitChanges sırasında gerçekleşir - veri içeriğim soyut ve somut uygulamada SubmitChanges'i devralıyorum ve geçersiz kıldım. Soyut veri bağlamı, DataContext'i genişleten ve geçerli kullanıcı kimliği ve adı için yer tutucuları olan bir CurrentUser özelliği ekleyen bir AbstractAuditableDataContext'den türetilmiştir. Varsayılan olarak bunlar, oturum açmış bir kullanıcının bulunmadığı durumlar için 0 ve "sistem" dir. Sözgelimi, kullanıcı masasının belirli alanlarının güncellenmesi durumunda kayıt sırasında veya oturum açıldığında. Uygulama, ASP.NET MVC kullanarak C# ile yazılmıştır.
Sorun:
benim türetilmiş veri bağlamın geçerli kullanıcı özelliği doldurmak için en iyi yolu nedir? AuditUtility'de enjekte edilen ve CurrentUser ayarlanıp ayarlanmadığını kontrol eden bir yardımcı program sınıfı oluşturmalı mıyım? Eğer bunu test etmek gerekirse, bununla karşılaşmak isterim ancak canlı uygulamada muhtemelen tembel -loading ve oturumda olsun/ayarlayın. Ya da bu işlevselliği gerçekleştirmek için veri bağlamı fabrikasını (tüm kontrolörler tarafından kullanılan) değiştirmeliyim. Birim testi sırasında zaten sahte bir fabrika kullanıyorum, bu yüzden yeni sınıflar oluşturmaya gerek kalmadı. Veya türetme fabrika dışında yapılmalı ve mevcut kullanıcı içerik oluşturma sırasında enjekte edilmelidir. Bu, "adına" denetim yapmamı sağlar.
Bunun bir şekilde öznel olduğunu anlıyorum ama katkıda bulunabileceğin herhangi bir düşünce/deneyime minnettarım.
Teşekkürler.
Veri içeriği kapsamı eylem başına - oldukça kısa ömürlü. – tvanfosson