Domanda

È difficile per me spiegare, quindi inizierò con un esempio.

Sto iniziando ad implementare un oggetto che cambia la cronologia nel mio progetto. Voglio tenere traccia della data del cambiamento, il cambia-cambiamento, l'oggetto è cambiato, ecc. E persistono queste informazioni nel mio DB.

Ho progettato un tavolo simile a questo (si adatta meglio alle mie esigenze):

Modifiche a tavola
Cambia_id (PK) |cambia_date |.Changer_id (FK) |Object_id |.Table_name |.Column_Name

con una riga esemplare
120 |.2013-11-20 |.55 |.88 |."fatture" |"Numero"

121 |.2013-11-25 |.53 |.99 |."Dipendenti" |"Nome"

Ora, vorrei avere questo tipo di oggetti di entità:

class Employee
{
    public virtual string Name {get; set;}
    public virtual IList<Changes> ChangesList {get; set;}
}
class Invoice
{
    public virtual string Number {get; set;}
    public virtual IList<Changes> ChangesList {get; set;}
}
.

La lista dei campeggi da entrambe le fatture e dipendenti dovrebbe provenire dalla stessa tabella in DB ovviamente.È possibile e come raggiungere questo mappando?Ci sono alternative / modifiche minori per renderlo possibile?

È stato utile?

Soluzione

Prima di inventare il tuo Dai un'occhiata a nerbernate.envers che gestisce l'auditing.

Se non si adatta alle tue esigenze è possibile mapparlo come

public ChangeMap
{
    Id(x => x.Id);
    Map(x => x.Date, "change_date");
    References(x => x.Changer, "changer_id");
    ...
    Map(x => x.TableName, "table_name");
}

// in EmployeeMap
HasMany(x => x.ChangesList).Where("table_name = 'employees'");

// in InvoiceMap
HasMany(x => x.ChangesList).Where("table_name = 'invoices'");
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top