Я использую Entity Framework 6.1, и мы сопоставили наши хранимые процедуры CUD с нашими объектами.Можете ли вы передать дополнительные параметры в дополнение к первичному ключу для сохраненного процесса для Entity Framework 6?
Все отлично работает для создания и обновления. Тем не менее, для удалений я хотел бы передать измененное имя пользователя на удаленный хранимый процесс, чтобы мы могли его зарегистрировать в таблицах аудита.
Я попытался добавить эти дополнительные параметры для модели строителя, когда я карту сохраненных проков:
private void MapStoredProcNamesWithExtraDeleteParams<T>(DbModelBuilder modelBuilder) where T : BaseAuditableObject
{
var tableName = typeof(T).GetCustomAttributes(false).OfType<TableAttribute>().First();
modelBuilder.Entity<T>()
.MapToStoredProcedures(s =>
s.Update(u => u.HasName(string.Format("{0}Update", tableName.Name)))
.Delete(d => d.HasName(string.Format("{0}Delete", tableName.Name))
.Parameter(x => x.ModifiedBy, "ModifiedBy")
.Parameter(x => x.ModifiedBy, "ModifiedDate")
.Parameter(x => x.ModifiedBy, "ModifiedByProgramName")
)
.Insert(i => i.HasName(string.Format("{0}Insert", tableName.Name))));
}
Однако это не удается, потому что он говорит, что нет никакого поля ModifiedBy на функции удаления.
Есть ли способ сделать это или мне нужно сначала обновить измененные, сохранить изменения, затем удалить объект и сохранить изменения еще раз?
Это правильно. Мы закончили подключение к методу SaveChanges DataContext, и там мы получим список элементов, которые будут удалены, и запишите запись в журнал аудита для каждого. Я могу разработать, если вы все еще пытаетесь решить эту проблему. – Bryant