Я использую следующий код для создания контрольного журнала в приложении MVC3.Как получить первичный ключ для столбца идентификации
В примере кода они используют GUIDs для первичных ключей. В моем случае я использую столбцы Identity, которые автоматически увеличиваются. Код в приведенной выше ссылке отлично работает, за исключением «add». Я не могу получить первичный ключ (return 0, поскольку for не передает эти данные) при вызове значений dbentry.current.
Я пытаюсь найти способ получить первичный ключ, чтобы я мог правильно добавить его в таблицу транзакций. Я знаю, что вы можете получить это после, но я не уверен, что лучший способ получить это, а затем обновить таблицу с помощью правильного первичного ключа.
Любые идеи будут оценены. Я бы предпочел не менять мои первичные ключи на GUID.
Я выполнил следующие изменения в моем dbcontext, который работает.
if (ent.State == System.Data.EntityState.Added)
{
base.SaveChanges();
ent.State = System.Data.EntityState.Added;
}
затем в функции GetAuditRecordsForChange я снова отдельностоящий поэтому запись не создается дважды.
if (dbEntry.State == System.Data.EntityState.Added)
{
// For Inserts, just add the whole record
// If the entity implements IDescribableEntity, use the description from Describe(), otherwise use ToString()
result.Add(new TransactionHistory()
{
TransactionTypeID = 1,
TableName = tableName,
FieldName = "ALL",
RecordPK = dbEntry.CurrentValues.GetValue<object>(keyName).ToString(),
OldValue = null,
NewValue = (dbEntry.CurrentValues.ToObject() is IDescribableEntity) ? (dbEntry.CurrentValues.ToObject() as IDescribableEntity).Describe() : dbEntry.CurrentValues.ToObject().ToString(),
TransactionBy = userId,
TransactionDate = changeTime,
TransactionApplication = "Galactus"
});
dbEntry.State = System.Data.EntityState.Detached;
}
Спасибо, я сделал пару небольших изменений, которые работают. Если состояние объекта добавлено, я делаю изменения сохранения, а затем снова добавляю состояние, чтобы логика продолжала работать для функции аудита, но отсоединяться после добавления аудита. Это, кажется, работает нормально. – Jeff