Ik gebruik de volgende code om een controlespoor te maken in een MVC3-app.
http://jmdority.wordpress.com/2011/07/20/using-entity-framework-4-1-dbcontext-change-tracking-for-audit-logging/
In het codevoorbeeld gebruiken ze GUID's voor primaire sleutels. In mijn geval gebruik ik Identiteitskolommen die automatisch worden verhoogd. De code in de link hierboven werkt prima, behalve bij 'toevoegen' kan ik de primaire sleutel niet ophalen (retourneer 0 als de for deze gegevens niet verzendt) bij het aanroepen van dbentry.current-waarden.
Ik probeer een manier te vinden om de primaire sleutel te krijgen, zodat ik deze correct aan mijn transactietabel kan toevoegen. Ik weet dat je dit achteraf kunt ophalen, maar ik weet niet zeker wat de beste manier is om dat te krijgen en werk de tabel vervolgens bij met de juiste primaire sleutel.
Om het even welke ideeën zouden worden gewaardeerd. Ik zou mijn primaire sleutels liever niet willen veranderen in GUID's.
Ik heb de volgende wijzigingen in mijn dbcontext aangebracht die werkt.
if (ent.State == System.Data.EntityState.Added)
{
base.SaveChanges();
ent.State = System.Data.EntityState.Added;
}
dan wordt in de functie GetAuditRecordsForChange opnieuw ontkoppeld, zodat het record niet twee keer wordt gemaakt.
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