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);
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.