Supposons que j'ai un projet MyData, puis j'ajoute MyDb.edmx avec l'assistant EF. Dans Ma base de données, j'ai une table Person. Ensuite, je vais obtenir une entité Personne dans le modèle EF.Comment utiliser le contexte d'entité dans la classe d'entité pour les performances?
Je veux étendre cette personne par classe partielle dans un person.cs de fichiers séparés comme:
namespace MyData
{
public partial class Person
{
[DataMember]
public int MyTotal
{
get
{
int count = 0;
using (MyEntities ctx = new MyEntities())
{
//run some linq to get calc based on other entities
}
return count;
}
}
}
Il fonctionne très bien. Ensuite, au client, je peux obtenir l'instance Person de l'entité avec la propriété MyTotal. Problème: lorsque je veux lister une personne du côté client (par exemple, silverlight), la performance est très mauvaise car pour chaque instance de Person, cela provoquera une connexion SQL DB et exécutera un SQL pour MyTotal.
Si j'ai plus d'un tel type de propriété d'extension, les performances seront très mauvaises. Comment résoudre ce problème?
Lors de l'utilisation de toutes les entités générées automatiquement par EF, il conservera toutes les relations (association). Si vous utilisez l'entité personnalisée récupérée par les procédures stockées, je ne suis pas sûr si toutes ces relations seront conservées. Sinon, vous devez construire toutes ces associations manuellement, ce qui sera douloureux. – KentZhou
Oui, mais vous essayez d'ajouter quelque chose à une entité qui ne va pas fonctionner avec une entité autogénérée (bien). C'est l'un des scénarios exacts pour lesquels ils ont ajouté la possibilité d'utiliser des procédures stockées pour générer des entités. –
Merci. Si j'ai un couple de résultats de calcul et que je veux les lier à une entité telle que People, sinon changer Entity (garder tout généré automatiquement aucun changement), quelle est la meilleure solution? – KentZhou