UI, Business (entities) ve Data (DbContext) katmanlarına sahip bir ASP.NET MVC3 web uygulamasına sahibim. İlk önce Entity Framework 4.1 Kodunu kullanıyorum. Şu anda, DbContext.SaveChanges()
'u Veri katmanında, IAuditable
arabirimimi uygulayan herhangi bir varlık nesnesinde yapılan tüm değişiklikler için ModifiedDate
'u ayarlayabileceğim şekilde geçersiz kılıyorum. sınıfına ve DateTime.Now
döndüren bir yönteme (GetCurrentDate) sahibim (bir test çalıştırmıyorsam, bu durumda, ne söylediysem onu döndürür).SaveChanges'i geçersiz kılma ve ModifiedDate'i ayarlama, ancak ModifiedBy'yi nasıl ayarlayabilirim?
ModifiedBy
özelliğini otomatik olarak geçerli kullanıcıya da ayarlamak istiyorum. Bunu yapmanın en iyi yolu nedir? Bu bilgiye ulaşmamı sağlayacak ya da DateProvider
sınıfına benzer bir şey ayarlamamı sağlayacak çerçevede yapılmış bir şey var mı? Bu bir Active Directory ortamıdır ve IIS'de WindowsAuthentication
kullanıyoruz.
public override int SaveChanges()
{
var changeSet = ChangeTracker.Entries<IAuditable>();
if (changeSet != null)
{
foreach (var entry in changeSet.Where(c => c.State != EntityState.Unchanged))
{
entry.Entity.ModifiedDate = DateProvider.GetCurrentDate();
}
}
return base.SaveChanges();
}
Kurucu enjeksiyon yöntemini gerçekten çok seviyorum. Teşekkürler! – norepro
Evet, harika fikir, yapıcı enjeksiyonu. – ProfK