का उपयोग कर डीबीकॉन्टेक्स्ट में उपयोगकर्ता की जानकारी कैसे प्राप्त करें मैं कक्षा पुस्तकालय विकसित करने की कोशिश कर रहा हूं जिसमें मैं कस्टम DbContext
लागू करना चाहता हूं। SaveChanges
DbContext
की विधि में, मुझे ऑडिटिंग उद्देश्य के लिए वर्तमान उपयोगकर्ता की जानकारी (विभाग, उपयोगकर्ता नाम आदि) प्राप्त करने की आवश्यकता है। DbContext
कोड में से कुछ हिस्सा नीचे है:नेट कोर
public override int SaveChanges()
{
// find all changed entities which is ICreateAuditedEntity
var addedAuditedEntities = ChangeTracker.Entries<ICreateAuditedEntity>()
.Where(p => p.State == EntityState.Added)
.Select(p => p.Entity);
var now = DateTime.Now;
foreach (var added in addedAuditedEntities)
{
added.CreatedAt = now;
added.CreatedBy = ?;
added.CreatedByDepartment = ?
}
return base.SaveChanges();
}
दो विकल्प मन में आ रहा है:
- उपयोगकर्ता जानकारी रखने के लिए, IHttpContextAccessor इंजेक्शन और (
HttpContext.Items
से जानकारी प्राप्त इस मामलेDbContext
निर्भर करता है मेंHttpContext.Items
का उपयोग करनाHttpContext
, क्या यह सही है?) HttpContext.Items
के बजाय थ्रेडस्टैटिक ऑब्जेक्ट का उपयोग करना और obje से जानकारी प्राप्त करना सीटी
प्रश्न (मैं कुछ पदों कि ThreadStatic सुरक्षित नहीं है पढ़ने के लिए): जो मेरे मामले में सबसे उपयुक्त है? क्या आप एक और तरीका सुझाते हैं?
इसे लागू करने का प्रयास करें। धन्यवाद। –
कि वास्तव में अच्छा तरीका है, मैं करूँगा लगता है के रूप में IHttpContextAccessor पर निर्भर कर सकते हैं अपने DbContext उस पर निर्भर की –