{DoddleAudit – Audit Trail fot LINQ to SQL}

{DoddleAudit – Audit Trail fot LINQ to SQL}

{DoddleAudit – Audit Trail fot LINQ to SQL}

{DoddleAudit – Audit Trail fot LINQ to SQL}
Project ini sangat bermanfaat untuk membuat “audit” secara otomatis, sesuai titel dari sub-judulnya. Maka project ini ditujukan bagi pengguna LINQ to SQL, jadi bagi pengguna LINQ to SQL yang telah mempunyai LINQ to SQL Classes (DBML) tinggal menambahkan Doddle.Linq. Audit sebagai reference pada project tempat file DBML disimpan, sebagai contoh dapat dilihat pada gambar di bawah ini.

Kemudian modifikasi agar Base Class dari LINQ to SQL Classes adalah Doddle.Linq.Audit.LinqToSql.AuditableDataContext.

Maka akan dapat dilihat baris seperti berikut ini.

Selanjutnya dapat ditambahkan barisan kode berikut ke dalam LINQ to SQL Classes.
protected override void InsertAuditRecordToDatabase(EntityAuditRecord record)
{
AuditRecord audit = new AuditRecord();
audit.Action = (byte)record.Action;
audit.AuditDate = DateTime.Now;
audit.AssociationTable = record.AssociationTable;
audit.AssociationTableKey = record.AssociationTableKey;
audit.EntityTable = record.EntityTable;
audit.EntityTableKey = record.EntityTableKey;

audit.UserName = System.Web.HttpContext.Current.User.Identity.Name;

foreach (ModifiedEntityProperty av in record.ModifiedProperties)
{
AuditRecordField field = new AuditRecordField();
field.MemberName = av.MemberName;
field.OldValue = av.OldValue;
field.NewValue = av.NewValue;

audit.AuditRecordFields.Add(field);
}

this.AuditRecords.InsertOnSubmit(audit);
}
Terakhir adalah menambahkan method untuk mendefinisikan “tabel-tabel” mana saja yang akan di-audit, nama method tersebut adalah DefaultAuditDefinitions, dengan isi seperti berikut ini.
1: protected override void DefaultAuditDefinitions()
2: {
3: this.Organisasis.Audit();
4: }
Pada baris ke-3 dapat dilihat bahwa “tabel” yang di-audit adalah “tabel” Organisasi. Selanjutnya apabila ada “tabel-tabel” lain yang ingin di-audit tinggal menambahkan ke dalam method ini.
{Hasil}
Berikut adalah “hasil” dari audit ini, di bawah ini adalah isi dari tabel utama audit, yaitu AuditRecords.

Pada data di atas, dapat dilihat tabel apa, kapan, oleh siapa dan aksinya, aksi direpresentasikan dengan nomor dari 0-2 :
• 0, adalah aksi insert.
• 1, adalah aksi edit.
• 2, adalah aksi delete.
Sedangkan pada tabel AuditRecordField dapat detail dari tabel AuditRecords yang berisi data “sejarah” dari setiap aksi.

Sebagai contoh, apabila aksinya adalah insert maka dapat dilihat nama field yang digunakan beserta nilainya. Apabila aksi yang dilakukan adalah update, maka akan dapat dilihat nama field yang diedit, nilai lama dari field tersebut beserta nilai barunya. Sedangkan bila terjadi aksi delete maka dapat dilihat nilai dari field-field dari record yang dihapus.
Tetapi kalau diperhatikan dari tabel yang di-audit, yaitu tabel Organisasi mempunyai struktur seperti berikut.

Dapat dilihat bawah primary-key dari tabel ini yaitu OrganisasiID bertipe int/integer, bagaimana apabila tipe data dari field primary-keynya bukan integer. Jawaban dari pertanyaan ini adalah Limitations.

Any tables you want to audit must have one (and only one) Primary Key field, which is of type “int”.
Depending on demand for this feature I will begin exploring ways around this, including GUID primary keys and composite keys.
Untungnya ini adalah community project yang source-codenya dapat digunakan untuk dimodifikasi sesuai kebutuhan, sampai nanti di blog selanjutnya yang akan memaparkan bagaimana memodifikasi agar tidak hanya primary-key bertipe integer saja yang dapat di-audit dengan DoddleAudit ini.

Sumber :https://obatwasirambeien.id/