2010-01-05 7 views
3

J'ai une table appelée Item.VIEWs dans Entity-Framework?

J'ai une vue appelée ItemView, qui renvoie toute la colonne de Item + une colonne agrégée supplémentaire, que je veux être en lecture seule.

Je dois l'utiliser dans Entity Framework, et je ne sais pas comment l'utiliser, car lorsque j'insère la vue dans le concepteur, tous les champs deviennent des entités-clés, sans aucune relation disponible, donc je peux N'accédez pas aux tables associées en tant que propriétés de navigation à partir de la table de base.

Existe-t-il un moyen de les faire tous les deux dans une classe? que puis-je faire d'autre?

Dites que j'ai un élément d'entité. après avoir enregistré cet élément Je veux récupérer ses valeurs calculées à partir de la vue, comment cela est-il fait?

Je n'ai jamais utilisé Views in EF, Quelles devraient être les meilleures pratiques utilisées dans ces scénarios?
Tout conseil, lien, blog, article, blague est bienvenu.

Répondre

5

EF Designer marque automatiquement chaque champ NOT NULL comme faisant partie de la clé primaire. Vous devrez éditer manuellement le fichier edmx et le corriger. Lorsque la clé primaire est définie correctement, vous devez définir les relations entre la table et la vue. Vous devriez lire cette entrée:

Entity Framework: Creating a model using views instead of tables

Si vous ne voulez pas changer edmx fichier à chaque fois que vous changez votre modèle, vous pouvez modifier la définition de votre point de vue. Si le champ est reconnu comme non nul, vous pouvez modifier la définition de vue de:

select field_name from table_name 

à

select coalesce(field_name,null) field_name from table_name 

Ce champ moyen est pas reconnu comme non nuls et seuls les champs de clé primaire en vue sont reconnus comme non nul.