2010-04-20 4 views
1

Je veux être en mesure de faire ce qui suit:application partielle dans Entity Framework 4

J'ai un modèle et à l'intérieur là, j'ai une entité.

Cette entité a la structure suivante:

public class Client 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

Ce que je veux maintenant, est d'obtenir juste le nom du client en fonction de l'identifiant. Par conséquent j'ai écrit une procédure stockée qui fait ceci. Maintenant, revenant à VS, je met à jour le modèle de la base de données avec la procédure stockée incluse.

L'étape suivante consiste à mapper cette procédure stockée sur l'entité cliente en tant qu'importation de fonction.

Cela fonctionne également très bien.

Essayer maintenant charger un résultat de nom du client dans une erreur lors de l'exécution ...

« Le lecteur de données est incompatible avec l' membre « CSTestModel.Client ». Un spécifié du type, ' Id ', n'a pas ont une colonne correspondante dans le lecteur de données avec le même nom. "

Je suis d'accord avec le message. Je sais comment résoudre ce problème (renvoyer en tant qu'ID du jeu de résultats, nom, description).

Mon idée derrière cette question est la suivante:

Je veux juste charger des parties de l'entité, et non l'entité complète elle-même. J'ai une restriction ici pour utiliser simplement les procédures stockées pour toute la communication vers/de la base de données.

Existe-t-il une solution à mon problème (sauf la création de types complexes, LINQ sur le jeu de résultats lui-même)? Et si oui, quelqu'un peut-il me diriger dans la bonne direction?

Un grand merci,

Dimi

Répondre

1

Tout projet sur un POCO:

var q = from c in Context.Clients 
     select new NameOnlyPresentation 
        { 
         Id = c.Id, 
         Name = c.Name 
        }; 

... ou tout simplement le nom:

public string ClientName(int id) 
{ 
    return (from c in Context.Clients 
      where c.Id == id 
      select c.Name).FirstOrDefault(); 
} 
bien
+0

, oublié de mentionner que je savoir à ce sujet aussi :) Editera ma question pour être plus précis là-bas. –

+0

Si vous connaissez la solution * vraiment simple *, qu'y a-t-il dans votre problème qui vous pousse à vous demander une solution très difficile? On dirait qu'il y a quelque chose qui manque ici. –

+2

L'utilisation de procédures stockées et l'obtention des avantages de la fonction de cartographie de EF me conduisent ici –