У меня довольно большая подпрограмма сохранения, которая обновляет сотни элементов с использованием Entity Framework, а затем сохраняет весь лот за один раз.
using (var dc = new EntityLayer.Entities())
{
dc.Entity1.Prop1 = 1;
dc.Entity1.Prop2 = 2;
dc.Entity2.Prop1 = 1;
dc.Entity2.Prop2 = 2; // Audit item
dc.Entity2.Prop3 = 3; // Audit item
dc.Entity3.Prop1 = 1;
...
dc.SaveChanges();
}
То, что я хотел бы сделать, так или иначерасширьте Сохранить для отдельного субъекта или воспользуйтесь этим изменением и запустите другой метод.
Основная цель этого - подключиться к нашей системе аудита, которая проверяет только некоторые ключевые элементы (например, толькоEntity2.Prop2 и Entity2.Prop3 в упрощенной версии выше), но, возможно, также будут запускать некоторые другие подпрограммы, создавать задачи и т. Д., Но суть в том, можно ли это сделать?дополнительную строку аудита, которую мы должны вставить для конкретных типов, как показано ниже:
using (var dc = new EntityLayer.Entities())
{
dc.Entity1.Prop1 = 1;
dc.Entity1.Prop2 = 2;
dc.Entity2.Prop1 = 1;
dc.Entity2.Prop2 = 2;
dc.Audit.CreateObject() { Type = "Entity2", Change = "Prop2", From = oldVal, To = 2}
dc.Entity2.Prop3 = 3;
dc.Audit.CreateObject() { Type = "Entity2", Change = "Prop3", From = oldVal, To = 3}
...
dc.SaveChanges();
}