Domanda

Sto usando la cancellazione morbido nel mio database (campo IsDeleted). Sto utilizzando attivamente LoadWith e AssociateWith metodi per recuperare e filtrare nidificato record.

La cosa è AssociateWith funziona solo con le proprietà che rappresenta una relazione uno-a-molti.

DataLoadOptions loadOptions = new DataLoadOptions();
loadOption.LoadWith<User>(u = > u.Roles);
loadOption.AssociateWith<User>(u = > u.Roles.Where(r = > !r.IsDeleted));

Nell'esempio di cui sopra dico solo:. Voglio recuperare gli utenti con ruoli legati (non eliminate)

Ma quando ho uno-a-uno, per esempio Document -> File (il solo file è legato al documento) Sono in grado di filtro soft cancellato oggetto:

DataLoadOptions loadOptions = new DataLoadOptions();
loadOption.LoadWith<Document>(d = > d.File);
// the next certainly won't work
loadOption.AssociateWith<File>(f = > !f.IsDeleted);

Quindi, c'è qualche idea di come i record di filtro all'interno della relazione uno-a-uno?

Grazie!

È stato utile?

Soluzione

Finora ho trovato solo una soluzione adatta per questo (oltre a non utilizzare le eliminazioni morbidi a tutti):. Per eliminare la relazione soft-delezione aggiornata entità

es. quando ho deciso di rimuovere un file dal documento, mi esibisco qualcosa come:

// this may be a part of update method
var file = document.File;
if (file.IsDeleted)
{
    // attach soft deleted file
    context.Files.Attach(file, true); 

    // remove a file reference
    document.File = null;
}

// attach document entity and submit changes
context.Documents.Attach(document, true);
context.SubmitChanges();

Quindi, questo può essere un sostituto per uno-a-uno filtraggio sul complesso recupero dei dati.

Altri suggerimenti

magari provare:

loadOptions.AssociateWith<File>(f => f.IsDeleted ? null : f);

questo vi darà NULL invece di file in cui IsDeleted è vero.

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