Dans EF 4, l'ObjectSet par défaut est disponible pour chaque entité. Par exemple, j'ai table Employee, après gererated Entity Model, EF créera ObjectSet sur Employee. Puis lorsque vous utilisez un service WCF ria, la requête par défaut sera comme:ObjectSet et ResultSet sur la procédure stockée sur EF et le service de domaine
publique IQueryable GetEmployee() { this.ObjectContext.Employees de retour; }
Avec ObjectSet, je peux appliquer comprennent le résultat comme:
return this.ObjectContext.Employees.Include("Department");
Puis-je créer une procédure stockée dire MySearchForEmployee et l'importer en fonction. le résultat est mappé à l'entité Employee. Lorsque vous appelez la fonction, le résultat sera ResultSet, pas ObjectSet.
Je veux méthode similaire disponible pour le service de domaine par appel de la procédure stockée comme:
public IQueryable<Employeer> GetMySearch(string keyword)
{
return this.ObjectContext.MySearchForEmployee(keyword).Include("Department");
}
Mais je ne peux pas becuase ci-dessus événement de code ne peut pas passer la vérification de syntaxe.
J'ai essayé suivante façon de convet le type de résultat:
var results = this.ObjectContext.MySearchForEmployee(keyword);
var objsets = (ObjectSet<Employee>) results;
puis je me suis erreur: Impossible de convertir le type 'System.Data.Objects.ObjectResult' à 'System.Data.Objects.ObjectSet'
Comment implémenter cette requête?
Merci. La solution fournie par EFExtensions n'est pas ce que je veux. Il vous donne plusieurs ensembles de résultats de SP, comme vous avez plus d'un choix dans votre SP. Mais ce que je veux c'est obtenir l'ensemble d'entités avec toutes ses données de recherche. Comme Include pour ObjectSet. Par exemple, Employee peut inclure 3 clés étrangères de table de recherche: DepartmentID, RoleID, GenderID. I – KentZhou
Ce que vous voulez n'est pas possible avec Entity Framework. Comme je l'ai dit, une importation de fonction de procédure stockée renvoie uniquement un type d'entité et ne peut pas inclure ses données de recherche. – Carvellis
Merci pour votre information. Découvrez une solution: Charger la recherche manuellement dans le code. – KentZhou