Ho un nucleo 2.0 di ASP.NET utilizzando il nucleo di Entity Framework su un db di SQL Server.
Devo tracciare e controllare tutte le cose fatte dagli utenti sui dati. Il mio obiettivo è avere un meccanismo automatico che scriva tutto ciò che sta accadendo.
Per esempio, se ho la tabella Animali, voglio una tabella parallele "Audit_animals" dove puoi trovare tutte le informazioni sui dati, il tipo di operazione (aggiungi, cancella, modifica) e l'utente che l'ha creata.
Ho già fatto questo tempo fa in Django + MySQL, ma ora l'ambiente è diverso. Ho trovato questo e sembra interessante, ma mi piacerebbe sapere se ci sono modi migliori e quale è l'approccio migliore per farlo in EF Core.
AGGIORNARE
Sto provando questo e succede qualcosa, ma ho qualche problema.
Ho aggiunto questo:
services.AddMvc().AddJsonOptions(options => {
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
public Mydb_Context(DbContextOptions<isMultiPayOnLine_Context> options) : base(options)
{
Audit.EntityFramework.Configuration.Setup()
.ForContext<Mydb_Context>(config => config
.IncludeEntityObjects()
.AuditEventType("Mydb_Context:Mydb"))
.UseOptOut()
}
public MyRepository(Mydb_Context context)
{
_context = context;
_context.AddAuditCustomField("UserName", "pippo");
}
Ho anche creato una tabella per inserire gli audit (solo uno per testare questo strumento), ma l'unica cosa che ho ottenuto è ciò che vedi nell'immagine. Un elenco di file json con i dati che ho creato .... perché ??
Leggi la documentazione :
Uscita evento
Per configurare il meccanismo di persistenza dell'output, vedere le sezioni Configuration and Data Provider .
Quindi, nella documentazione sulla configurazione :
Se non si specifica un provider di dati, verrà utilizzato un
FileDataProvider
predefinito per scrivere gli eventi come file .json nella directory di lavoro corrente. (sottolineatura mia)
Lungo e breve, segui la documentazione per configurare il fornitore di dati che desideri utilizzare.
Se si desidera mappare la tabella di controllo (Audit_Animals) sullo stesso contesto EF della tabella Animali controllata, è possibile utilizzare il provider di dati EntityFramework incluso nella stessa libreria Audit.EntityFramework
.
Controlla la documentazione qui :
Provider di dati di Entity Framework
Se si prevede di archiviare i registri di controllo nello stesso database delle entità controllate, è possibile utilizzare
EntityFrameworkDataProvider
. Utilizzare questa opzione se si prevede di archiviare le piste di controllo per ciascun tipo di entità in una tabella con una struttura simile.
Esiste un'altra libreria che può controllare i contesti EF in modo simile, dai un'occhiata: zzzprojects / EntityFramework-Plus .
Non posso raccomandare l'uno sull'altro poiché offrono funzionalità diverse (e sono il proprietario della libreria audit.net).