2016-12-07 4 views
0

Я пытаюсь внедрить систему журналов в контекст среды entitiy. Я хочу получить первичный ключ удаленного элемента, когда его состояние будет удалено. это мой код:Прикрепление DbEntityEntry к контексту

if (item.State == EntityState.Added || item.State == EntityState.Deleted) { 
    log = new dt_islemLog(); 
    log.eskiDeger = null; 
    log.islem = (item.State == EntityState.Added) ? Enums.GetDBValue(Enums.islemDurum.EKLENDI) : Enums.GetDBValue(Enums.islemDurum.SILINDI); 
    log.islemYapanKullanici_id = kullaniciID; 
    log.nesneAd = item.Entity.GetType().Name; 
    log.oturum_id = oturumID; 
    log.zaman = DateTime.Now; 
    base.SaveChanges(); 

    var ID = GetPrimaryKeyValue(item); 
    log.nesneID = ID != null ? ID.ToString() : null; 

    this.dt_islemLog.Add(log); 
} 

И это метод, который я получить первичный ключ

object GetPrimaryKeyValue(DbEntityEntry entry) { 
    try { 
     if (entry.State == EntityState.Detached) 
      ((IObjectContextAdapter)this).ObjectContext.Attach((System.Data.Entity.Core.Objects.DataClasses.IEntityWithKey)entry.Entity); 

      var objectStateEntry = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager.GetObjectStateEntry(entry.Entity); 
      return objectStateEntry.EntityKey.EntityKeyValues[0].Value; 

    } 
    catch(Exception ex) { 
     return null; 
    } 
} 

Но я не могу прикрепить (entry.Entitiy) в контексте, поскольку операция приведения типов инвалид. Как я могу получить первичный ключ?

ответ

0

Если кому-то нужно, я нашел решение. я обновил метод первичного ключа, чтобы это понравилось

 object GetPrimaryKeyValue(DbEntityEntry entry) 
    { 
     try 
     { 
      if (entry.State == EntityState.Detached) 
       this.Set(entry.Entity.GetType()).Attach(entry.Entity); 

      var objectStateEntry = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager.GetObjectStateEntry(entry.Entity); 
      return objectStateEntry.EntityKey.EntityKeyValues[0].Value; 

     } 
     catch 
     { 

      return null; 
     } 

    } 
Смежные вопросы