Bonsoir,

J'ai un petit soucis que je n'arrive pas à résoudre malgré mes multiples recherches.

En effet, j'ai une procédure stockée qui attend un paramètre (l'id du client) afin d'effectuer un select.

Sur SQL tout se passe bien, quand j'exec j'ai le résultat voulu..

Par contre sous MVC j'ai un 'bug' par rapport (je pense) à mon paramètre...

Voici des exemples de mon code:

Mon contrôleur:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DAL;
 
namespace EphecAirlinesClient.Controllers
{
    public class OverviewController : Controller
    {
 
        private Ephec_AirlinesEntities contexteEF = new Ephec_AirlinesEntities();
 
        // GET: Overview
        public ActionResult Index(int? id)
        {
 
            return View(contexteEF.Sp_Select_All_Reservation_By_Id_Client(id));
        }
    }
}

Ma procédure stockée (qui fonctionne):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ALTER PROCEDURE [dbo].Sp_Select_All_Reservation_By_Id_Client
@IdClient INT
AS
BEGIN
 
	SET NOCOUNT ON;
 
	SELECT	r.RES_Id AS "Réservation n°",
			p.PLA_Date AS "Date du vol", 
			vdepart.VIL_Libelle AS 'Départ', 
			varrivee.VIL_Libelle AS 'Arrivée', 
			r.RES_Prix_Total AS "Prix total"
			FROM Reservation r
			JOIN Client AS c
			ON c.CLI_Id = r.RES_Client_Id
			JOIN Planning p
			ON p.PLA_Id = r.RES_Pla_Id
			JOIN Vol AS v
			ON v.VOL_Id = p.PLA_Vol_Id
			JOIN Ville AS vdepart
			ON vdepart.VIL_Id = v.VOL_Vil_Depart_Id
			JOIN Ville AS varrivee
			ON varrivee.VIL_Id = v.VOL_Vil_Arrivee_Id
			WHERE c.CLI_Id = @IdClient
END
Ma vue:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
@model DAL.Sp_Select_All_Reservation_By_Id_Client_Result
 
@{
    ViewBag.Title = "Visualiser mes vols";
}
 
<h2>Visualiser mes vols</h2>
 
<div>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.Réservation_n_)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.Réservation_n_)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.Date_du_vol)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.Date_du_vol)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.Départ)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.Départ)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.Arrivée)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.Arrivée)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.Prix_total)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.Prix_total)
        </dd>
 
    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { /* id = Model.PrimaryKey */ }) |
    @Html.ActionLink("Back to List", "Index")
</p>
Mon message d'erreur:

Erreur du serveur dans l'application '/'.
L'élément de modèle passé dans le dictionnaire est de type « System.Data.Entity.Core.Objects.ObjectResult`1[DAL.Sp_Select_All_Reservation_By_Id_Client_Result] », mais ce dictionnaire requiert un élément de modèle de type « DAL.Sp_Select_All_Reservation_By_Id_Client_Result ».
Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.InvalidOperationException: L'élément de modèle passé dans le dictionnaire est de type « System.Data.Entity.Core.Objects.ObjectResult`1[DAL.Sp_Select_All_Reservation_By_Id_Client_Result] », mais ce dictionnaire requiert un élément de modèle de type « DAL.Sp_Select_All_Reservation_By_Id_Client_Result ».
Merci d'avance...

EDIT:

J'ajoute le fait que quand j'essaye avec SqlParameter j'ai le problème suivant:

Erreur CS1503 Argument 1*: conversion impossible de 'System.Data.SqlClient.SqlParameter' en 'int?' EphecAirlinesClient C:\Users\j0n\source\Projet\EphecAirlinesClient\EphecAirlinesClient\Controllers\OverviewController.cs 26 Actif
En gros je sais le faire en ADO.Net sauf que le prof souhaite qu'on fasse une partie d'un projet avec Entity Framework..