J'ai une procédure stockée très simple qui renvoie plusieurs ensembles d'enregistrements. Tous les ensembles d'enregistrements ont des colonnes aliasées de sorte qu'ils se ressemblent tous.Entity Framework 4 - Comment lire plusieurs jeux d'enregistrements à partir d'une procédure stockée?
E.g.
SELECT TOP 10 FooId AS Id, Name As Name FROM Foos
SELECT TOP 10 BarId AS Id, Name As Name FROM Bars
...
Pour ma configuration EF, j'utilise Poços et avoir ma propre DataContext (sans génération de code).
Maintenant, j'ai créé une "Importation de fonction" en utilisant la technique détaillée here.
Mais le problème est, il est de créer un type complexe avec ID et nom, pas un type qui peut contenir plusieurs collections d'ID et de nom. EF ne peut-il pas détecter que je renvoie plusieurs ensembles d'enregistrements? Par conséquent, le proc stocké est exécuté correctement, mais les seuls enregistrements qui reviennent proviennent de la première instruction select, les autres sont ignorés. Donc je ne récupère que 10 records.
Voilà comment im exécution de la procédure stockée dans mon DataContext personnalisé:
public ObjectResult<SomeSimpleProc_Result> GetSomeStuff()
{
return base.ExecuteFunction<SomeSimpleProc_Result>("SomeSimpleProc);
}
et le résultat de retour POCO:
public class SomeSimpleProc_Result
{
#region Primitive Properties
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
#endregion
}
Le résultat final est que je veux un objet qui a 0- objets * dedans (dans le cas ci-dessus, 3 objets). Chaque objet devrait contenir un ensemble d'objets simples (Id, Name).
Je pense que le problème est définitivement avec la personnalisation de la «fonction Import». Comment devrais-je créer le type complexe? Ou devrais-je utiliser "Retourne une collection d'entités".
Des idées?
Ah Ha! Belle trouvaille. D'accord, il semble que nous devions revenir à un "classique" ADO.NET pour obtenir les ensembles de résultats. Dang. Même problème avec la mise à jour de plusieurs enregistrements avec une seule transaction (utiliser SqlCommand). Eh bien, au moins nous le savons. Merci. – RPM1984