12
votes

Comment puis-je exclure un membre de la cartographie LINQ-TO-SQL?

J'ai cette classe: xxx

Le point est FORDISPLAY ne doit pas être stocké dans la base de données - j'en ai juste besoin pour un code plus pratique.

J'essaie d'exécuter une requête SQL qui renvoie une ligne de rangée et obtenez ce InvalidOperationException :

ne peut pas attribuer de la valeur au membre 'Fordisplay'. Il ne définit pas un setter.

Je ne veux pas FORDISPLAY Pour être touché par LINQ-TO-SQL. Comment dit Ling-to-SQL de ne pas le toucher?


1 commentaires

Pas sûr, mais essayez de faire des FORDISPLAY A colonne calculée LINQ2SQL .


4 Réponses :


0
votes

Essayez de déclarer la colonne en tant que colonne calculée comme celle-ci: xxx

qui devrait fonctionner.


1 commentaires

Essayé - aucun changement de comportement.



1
votes

Vous pouvez prolonger LINQ2SQL avec des classes partielles. L'élément clé ne doit pas modifier la classe d'origine mais créer une classe partielle supplémentaire: xxx


1 commentaires

Cela fonctionne bien avec des tables. Cela ne fonctionne pas avec les procédures stockées.



7
votes

Vous n'avez pas besoin de dire à Linq à SQL qu'il ne faut pas toucher la propriété "FORDISPLAY". Normalement, toutes les propriétés qui ne sont pas spécifiquement marquées avec l'attribut sont traitées comme une partie transitoire de votre logique d'application et ne sont pas persistées ou extraites de la base de données.

Cependant, si vous souhaitez récupérer des Enregistrements de la base de données via une procédure stockée, indiquez getmycasses , alors le concepteur créera une nouvelle classe getmyclassesresult . Si vous regardez le code généré, vous remarquerez que la classe n'est pas décorée avec l'attribut (code>. Dans ce cas, le mappeur suppose que chaque propriété doit être attribué. S'il y a une propriété sans valeur correspondante dans la requête, le mapper tentera de définir la propriété par défaut (t), mais comme il n'y a pas de seigur, l'exception sera lancée.

Quoi qu'il en soit, pour faire Une longue histoire courte, il suffit d'ajouter xxx

à votre classe devrait corriger le problème.


1 commentaires

Pourriez-vous s'il vous plaît fournir une version vb?



0
votes

Mon problème était avec la valeur de retour d'une fonction de valeur de table où le modèle n'a pas décoré xxx

sur la classe. Je peux confirmer que l'ajout de [table] contre ma classe partielle supplémentaire a fonctionné un régal xxx


0 commentaires