2010-07-08 8 views
0

Puis-je faire quelque chose comme ça: J'ai une entité Client avec Id, Nom, CommentairePuis-je obtenir l'entité remplie via Entity SQL?

Maintenant je veux obtenir cette entité du contexte avec l'id rempli et le nom et le commentaire doivent être vides. Je ne veux pas l'interroger à partir de la base de données.

dans T-SQL simplement:

Select Id, Name from Customers where id=4 

Puis-je faire ce tour avec quelque chose Entity SQL comme ça:

Select Customer.Id, Customer.Name from MyContext.Customer Where Customer.Id=4 

Répondre

1

Si je comprends bien vos questions que vous voulez faire

from c in db.Customers where c.Id == 4 select {c.Id, c.Name}; 

Ceci sélectionnera seulement les propriétés Id et Name du D atabase

Modifier

donc comme vous l'avez mentionné dans vos commentaires que vous avez besoin de quelque chose qui sélectionne dans un nouvel objet client, vous ne pouvez vraiment pas faire cela en une seule déclaration. Vous pouvez cependant faire quelque chose comme.

var selectedCustomers = (from c in MyContext.Customers where c.Id == 4 select {c.Id, c.Name}; 

foreach(Customer currentCustomer in selectedCustomer) 
{ 
    Customer newCustomer = new Customer; 
    newCustomer.Id = currentCustomer.Id; 
    newCustomer.Name = currentCustomer.Name; 
} 
+0

Oui. Je veux quelque chose comme ça mais vous avez écrit une requête Linq et je veux une requête Entity SQL J'ai besoin d'un résultat fortement typé avec les propriétés remplies par ma requête Quelque chose comme ça Sélectionnez la ligne de valeur (Customer.Id, Customer.Name) de MyContext. client Où Customer.Id = 4 et le résultat de cette requête doit être entité client mais pas DbDataRecord –

+0

Je veux dire requêtes: context.CreateQuery (...) Ou context.ExecuteStoreQuery (...) –

+0

@ Brian: ESQL vs LINQ a un effet * zéro * sur le typage fort du résultat. @ LINQ * de msarchet est * fortement typé. Il ne retourne pas 'DbDataRecord' (avez-vous essayé?). Il projette sur un type anonyme, mais vous pouvez également retourner des POCO. Vous ne pouvez pas charger un 'client' à mi-chemin. Il me semble que vous voulez un DTO, pas une entité. C'est bon: faites-le! –