J'essaie actuellement de mettre en œuvre les référentiels pour mes objets de domaine avec la RC d'entité Framework 4.1 et sa première approche de code.
Maintenant, j'ai une entité de domaine "Voyage" qui a un identifiant unique encapsulé dans le type "Voyagenumber" maintenant, je reçois une exception lorsque je le fais dans la configuration de mon dBContext: p> La propriété 'Voyagenumber' ne peut pas être
utilisé comme une propriété clé sur l'entité
'Domain.model.voyages.voyage' parce que
Le type de propriété n'est pas une clé valide
taper. Seuls les types scalaires, la chaîne et
Les octets [] sont des types de clés pris en charge. P>
blockQuote> Et aussi lorsque j'essaie ceci: p> L'expression de propriétés 'k =>
k.voyagenumber.id 'n'est pas valide. Les
expression devrait représenter un
Propriété: C #: 'T => T.MYPROPERTY' P>
BlockQuote> Dois-je vraiment détruire mon Voyagenumber et le remplacer par un type primitif? P> P>
3 Réponses :
C'est la limitation. Les membres clés ne peuvent être que des propriétés scalaires directement dans l'entité. Le type complexe est représenté comme une propriété complexe qui n'est pas prise en charge. P>
Quelle honte, alors je suppose que je vais d'abord abandonner le code, car je ne suis pas disposé à abandonner l'encapsulation de la clé primaire.
Je n'étais pas clair. C'est la limitation du cadre d'entité. Non seulement la limitation du code en premier.
Est-ce toujours vrai dans EF6? Je reçois la même erreur documentée dans les questions originales afin que je suppose que rien n'a changé mais en espérant qu'une option de configuration a été ajoutée que je manque.
Pour une classe isolée, vous pouvez faire une solution de contournement en lecture seule en ajoutant une méthode "Obtenir" à votre dBContext qui fait un J'ai travaillé ici un cas de test minimal ici: https: // github.com/timabell/ef-complex-pk p> par exemple p> SQLQUERY <> code> et mappe la table à la classe en interne (l'ancien Fashioned Way).
Nous pouvons le résoudre avec ci-dessous. J'espère que c'est utile. dans dbcontext: p> dans le référentiel: p>
Quel est le message d'exception lorsque vous utilisez ceci: ModelBuilder.entity (). HASKEY (k => k.voyagenumber);
Mise à jour de la question avec les messages d'exception.
toujours le cas dans EF 6.1.3