Я знаю, что существует несколько похожих сообщений, но я не могу найти ни одного с решением этой проблемы.
Я хочу добавить (своего рода) AudioLog при добавлении, изменении или удалении объектов (мягкое удаление) в Entity Framework 6. Я переопределил SaveChanges, и поскольку я хочу добавлять записи журнала только для добавленных, измененных или удаленных состояний Entity, я извлекаю список перед вызовом Сохраняем изменения с первого раза. Проблема в том, что поскольку мне нужно зарегистрировать, какая операция была выполнена, мне нужно проверить EntityState объектов. Но после вызова SaveChanges EntityState остается неизменным для всех записей.
public override int SaveChanges()
{
using (var scope = new TransactionScope())
{
var modifiedEntries = ChangeTracker.Entries()
.Where(e => e.State == EntityState.Added || e.State == EntityState.Deleted || e.State == EntityState.Modified)
.ToList();
int changes = base.SaveChanges();
foreach (var entry in modifiedEntries)
{
ApplyAuditLog(entry);
}
base.SaveChanges();
scope.Complete();
return changes;
}
}
private void ApplyAuditLog(DbEntityEntry entry)
{
ILog entity = entry.Entity as ILog;
if (entity != null)
{
LogOperation operation;
switch (entry.State)
{
case EntityState.Added:
operation = LogOperation.CreateEntity;
break;
case EntityState.Deleted:
operation = LogOperation.DeleteEntity;
break;
case EntityState.Modified:
operation = LogOperation.UpdateEntity;
break;
default:
throw new ArgumentOutOfRangeException();
}
AuditLog log = new AuditLog
{
Created = DateTime.Now,
Entity = entry.Entity.GetType().Name,
EntityId = entity.Id,
Operation = operation,
};
AuditLog.Add(log);
}
}
Подробнее здесь: https://stackoverflow.com/questions/197 ... ramework-6
Как получить идентификатор от объекта для Auditlog в Entity Framework 6 ⇐ C#
Место общения программистов C#
1763043615
Anonymous
Я знаю, что существует несколько похожих сообщений, но я не могу найти ни одного с решением этой проблемы.
Я хочу добавить (своего рода) AudioLog при добавлении, изменении или удалении объектов (мягкое удаление) в Entity Framework 6. Я переопределил SaveChanges, и поскольку я хочу добавлять записи журнала только для добавленных, измененных или удаленных состояний Entity, я извлекаю список перед вызовом Сохраняем изменения с первого раза. Проблема в том, что поскольку мне нужно зарегистрировать, какая операция была выполнена, мне нужно проверить EntityState объектов. Но после вызова SaveChanges EntityState остается неизменным для всех записей.
public override int SaveChanges()
{
using (var scope = new TransactionScope())
{
var modifiedEntries = ChangeTracker.Entries()
.Where(e => e.State == EntityState.Added || e.State == EntityState.Deleted || e.State == EntityState.Modified)
.ToList();
int changes = base.SaveChanges();
foreach (var entry in modifiedEntries)
{
ApplyAuditLog(entry);
}
base.SaveChanges();
scope.Complete();
return changes;
}
}
private void ApplyAuditLog(DbEntityEntry entry)
{
ILog entity = entry.Entity as ILog;
if (entity != null)
{
LogOperation operation;
switch (entry.State)
{
case EntityState.Added:
operation = LogOperation.CreateEntity;
break;
case EntityState.Deleted:
operation = LogOperation.DeleteEntity;
break;
case EntityState.Modified:
operation = LogOperation.UpdateEntity;
break;
default:
throw new ArgumentOutOfRangeException();
}
AuditLog log = new AuditLog
{
Created = DateTime.Now,
Entity = entry.Entity.GetType().Name,
EntityId = entity.Id,
Operation = operation,
};
AuditLog.Add(log);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/19797820/how-to-get-id-from-entity-for-auditlog-in-entity-framework-6[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия