Question

J'utilise la suppression douce dans ma base de données (champ IsDeleted). J'utilise activement les méthodes de LoadWith et AssociateWith pour récupérer et dossiers imbriqués de filtre.

La chose est AssociateWith fonctionne uniquement avec des propriétés qui représente un à plusieurs.

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

Dans l'exemple ci-dessus, je dis simplement:. Je veux récupérer les utilisateurs avec des rôles liés () non supprimés

Mais quand j'ai une à une relation, par exemple Document -> File (le seul fichier est lié au document) Je suis incapable de mou filtre objet supprimé:

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

Alors, est-il une idée comment filtrer des enregistrements au sein de l'un à une relation?

Merci!

Était-ce utile?

La solution

Jusqu'à présent, je trouve qu'une seule solution appropriée à cet effet (en dehors de ne pas utiliser du tout doux suppressions):. Supprimer la relation de suppression douce sur la mise à jour de l'entité

par exemple. quand j'ai décidé de supprimer un fichier du document, je joue quelque chose comme:

// 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();

Alors, cela peut être un remplacement pour un à-un filtrage sur la récupération de données complexes.

Autres conseils

peut-être essayer:

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

cela vous donnera Null au lieu de fichiers où IsDeleted est vrai.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top