Entity Framework sélectionne une seule valeur de la ligne

.net-3.5 c# entity-framework

Question

J'utilise Entity Framework à partir de .NET 3.5

J'ai deux tables avec 0-1 à beaucoup de relation. Disons Citoyen et Ville. Chaque citoyen a une colonne de clé étrangère (ID) qui le connecte à la ville.

Quand je choisis un seul citoyen, je dois aussi choisir le nom de la ville où il habite. Parce que la table city contient des tonnes de données qui ne sont pas vraiment liées aux citoyens, je ne souhaite donc pas les extraire de la base de données pour économiser de la bande passante.

Actuellement, j'utilise la fonction Include (), mais elle récupère toutes les données de la ville liées au citoyen, alors que je n'ai besoin que d'un nom.

Existe-t-il un moyen d'écrire une requête pour sélectionner une seule cellule de la ligne entière dans EF sans créer de nouvelles classes, interfaces ou référentiels? Voici mon include:

            Citizen citizen = db.Citizens.Include("Cities").First(p => p.citizen_id == id);

Réponse acceptée

Vous faites cela en projetant, par exemple

var c = from c in db.Citizens
        where c.citizen_id == id
        select new
        {
            Name = c.Name,
            CityName = c.City.Name
        };

Vous pouvez également projeter sur des POCO.

Vous ne pouvez pas demander à l'EF de récupérer un objet de type Citizen avec une City associée mais uniquement avec City.Name renseigné. L'EF ne matérialisera pas partiellement une entité. Utilisez des modèles d'affichage / de présentation ou des DTO au lieu d'entités lorsque vous n'avez besoin que de quelques champs.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow