Ignorer lecture seule des propriétés de classe lors de l'utilisation DataContext.ExecuteQuery

StackOverflow https://stackoverflow.com/questions/707706

Question

Comment puis-je dire un contexte de données LINQ ignorer soit des propriétés spécifiques, ou toutes les propriétés en lecture seule, lors de la liaison d'un jeu de résultats à un objet?

Je travaille avec des instructions T-SQL qui sont difficiles à exprimer en utilisant LINQ, donc je suis en utilisant la méthode ExecuteQuery du contexte de données pour passer le T-SQL directement à la base de données.

Si ma classe T a des propriétés en lecture seule, je reçois des exceptions à l'exécution lorsque le contexte de données tente de définir ces propriétés et échoue parce qu'il n'y a pas la propriété setter. Comment puis-je dire le contexte d'ignorer ces propriétés?

est ce que je fais maintenant. Il fonctionne, mais il aspire:

public bool IsPaidInFull {
    get { return NetTotal <= 0m; }
    set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
Était-ce utile?

La solution

Avez-vous envisagé LINQ to Entities? Il ne peut pas être la peine de convertir votre projet, en fonction de la distance le long de vous, ou combien ORM frais généraux que vous êtes à l'aise avec. Cependant, ce scénario exact ne serait pas un problème dans LINQ to Entities. Il ne cherche pas à mettre à jour propriétés en lecture seule dans l'objet quand il le chargement, car ils ne sont pas explicitement mis en correspondance, ils sont tout simplement les propriétés d'extension.

En outre, vous pouvez aller la vieille école / route java en utilisant des fonctions getter au lieu de propriétés. bool publique getIsPaidInFull () {return NetTotal <= 0 m;}.

Ou vous pouvez jouer avec la mise en œuvre des propriétés en lecture seule dans une classe enfant héritée, mais qui peuvent présenter toutes sortes de problèmes de type.

Autres conseils

public bool IsPaidInFull
{
    get { return NetTotal <= 0m; }
    private set { ;}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top