Très souvent, nos systèmes appellent des procédures stockées qui génèrent plusieurs tables valant des résultats. Auparavant, nous utilisions des sorties XML pour obtenir chaque table et les lier correctement en utilisant XSLT. Si j'utilisais ASP.NET MVC avec LINQ appelant une procédure stockée, comment puis-je obtenir chacune des tables, puis générer les données si nécessaire?Sortie de plusieurs tables de procédure stockée avec LINQ et ASP.NET MVC
Répondre
this article here explique tout. C'est le même article que j'ai lié, dans votre previous SO question.
J'ai marqué celui-ci comme étant juste parce que j'avais posé une nouvelle question dans une autre question et que vous y aviez passé beaucoup de temps. À votre santé. – Kezzer
Il existe un article sur LINQ to SQL et les procédures stockées, en particulier la section 'Gestion des formes de résultats multiples à partir de SPROC': LINQ to SQL - Retrieving Data Using Stored Procedures.
Est-ce utile dans votre cas?
Sinon, ne pas utiliser LINQ to SQL, peut-être utiliser SqlDataReader
« s NextResult
passer par les résultats, par exemple:
IList<Employee> employees = new List<Employee>();
IList<Customer> customers = new List<Customer>();
using (SqlConnection connection = new SqlConnection
(Properties.Settings.Default.NorthwindConnectionString))
using (SqlCommand command = new SqlCommand
("GetEmployeesAndCustomers", connection))
{
command.CommandType = CommandType.StoredProcedure;
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Employee e = new Employee{EmployeeID = (int)reader["EmployeeID"]};
employees.Add(e);
}
reader.NextResult();
while (reader.Read())
{
Customer c = new Customer{CustomerID = (string)reader["CustomerID"]};
customers.Add(c);
}
}
}
Edit: Exemple de la façon de traiter des combinaisons de données personnalisées qui ne sont pas s'intègre facilement dans les objets du modèle de domaine; dans ce cas, la récupération des commandes ainsi que les clients pour les commandes:
namespace Company.Application.ViewModel
{
public class CustomerOrder
{
public string CustomerID { get; set; }
public string CustomerName { get; set; }
public int OrderID { get; set; }
public DateTime? OrderDate { get; set; }
}
}
namespace Company.Application.Repository
{
public class CustomerOrderRepository
{
public IList<CustomerOrder> GetCustomerOrders()
{
NorthwindDataContext db = new NorthwindDataContext();
var custorders = from customer in db.Customers
join order in db.Orders
on customer.CustomerID equals order.CustomerID
select new CustomerOrder
{
CustomerID = customer.CustomerID,
CustomerName = customer.CompanyName,
OrderID = order.OrderID,
OrderDate = order.OrderDate
};
return custorders.ToList();
}
}
}
Inspiration pour cela: Dans le chapter à propos NerdDinner, Scott Guthrie parle de la création d'objets « ViewModel » habitude de conserver des données à partir par exemple jointures qui ne sont pas s'intègre facilement dans les objets du modèle de domaine.
J'avais lu cet article, mais il n'explique pas comment ramener plusieurs ensembles de résultats dans une procédure stockée en utilisant LINQ. En outre, il n'explique même pas comment utiliser LINQ lors de la récupération de jeux de données personnalisés, c'est-à-dire des sous-ensembles ou des combinaisons de tables à partir de requêtes utilisant JOINs. Je n'ai pas encore essayé votre exemple cependant. – Kezzer
Concernant la récupération des ensembles de données personnalisés, dans le chapitre ici (http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf) à propos de Nerddinner (http://weblogs.asp.net/scottgu/archive/2009) /03/10/free-asp-net-mvc-ebook-tutorial.aspx), Scott Guthrie parle de créer des objets 'ViewModel' personnalisés pour contenir des données de par exemple des jointures qui ne rentrent pas facilement dans les objets du modèle de domaine (je vais donne un exemple dans la réponse éditée ci-dessus) –
Super, merci beaucoup! – Kezzer
- 1. Comment insérer des données dans deux tables de linq 2 sql avec la procédure stockée
- 2. precision décimal et échelle en utilisant LINQ et la procédure stockée avec des paramètres de sortie
- 3. Insérer dans plusieurs tables de base de données en utilisant Linq, ASP.NET MVC
- 4. procédure stockée Linq avec des résultats dynamiques
- 5. Exécuter une procédure stockée avec un paramètre de sortie?
- 6. Procédure stockée par Linq Problème
- 7. LINQ, ASP.net mvc et joint
- 8. Comment renvoyer plusieurs enregistrements de plusieurs tables par une seule procédure stockée ayant des paramètres?
- 9. Contrôle de plusieurs sorties de procédure stockée SQL en C#
- 10. Performance Comparaison de linq 2sql et Ado.net Entity Framework avec procédure stockée?
- 11. Procédure stockée & LINQ, Dmbl Impossible d'interpréter le jeu de résultats
- 12. Liaison Linq à plusieurs tables
- 13. Classe Linq to SQL - Changement de signature de procédure stockée
- 14. Asp.net MVC - données LINQ et Hieararchical
- 15. structure de procédure stockée
- 16. ASP.NET MVC, LINQ et ModelBinders
- 17. procédure stockée et Entity Framework
- 18. procédure stockée en sortie de lecture qui renvoie plusieurs jeux d'enregistrements en SQL 2005
- 19. Supprimer de plusieurs tables ASP.NET
- 20. Procédure stockée renvoie plusieurs jeux d'enregistrements
- 21. Procédure stockée de Crystal Reports XI et MySQL avec paramètres
- 22. Syntaxe de procédure stockée
- 23. Erreur de procédure stockée
- 24. question de procédure stockée avec IS_MEMBER
- 25. Curseur SQL avec procédure stockée et requête avec UDF
- 26. MySql retournant plusieurs lignes de la procédure stockée/fonction
- 27. Travail SQL et procédure stockée
- 28. Can Entity Framework gère plusieurs ensembles de résultats (chacun provenant de tables jointes) à partir d'une procédure stockée?
- 29. Ajout d'éléments à plusieurs tables avec linq à sql
- 30. Marquage du nom de la procédure stockée
Pouvez-vous élaborer un peu plus sur votre question, Voulez-vous afficher ces données de la procédure stockée sur une page Web? –
Ouais, j'essaye de produire trois tables séparées valant des données sur une seule page Web en utilisant LINQ. – Kezzer
Kezzer - vous devriez également demander la réponse dans VB.NET et ajouter cette étiquette, parce que je sais que vous êtes dans le monde VB et que vous avez du mal à traduire C# en VB.NET. –