Bonjour,

Je suis entrain de revoir .NET et donc MVC4 et je suis confronté à un soucis avec l'héritage et ce que génère entity framework.
J'ai donc une classe abstraite "Person" et une classe héritant de Person nommée "User".
J'ai donc créé mon context:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Entity;
 
 
namespace erp.Models
{
    public class ErpContext : DbContext
    {
        public DbSet<Person> Persons { get; set; }
 
 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
 
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }
 
    }
}
J'ai donc créé le controller qui s'appuie sur le modèle User et le context plus haut.
Quand je regarde, il me crée bien la table Person avec toutes les propriétés de Person et User.
Voici le controller qui me génère:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using erp.Models;
 
namespace erp.Controllers
{
    public class UserController : Controller
    {
        private ErpContext db = new ErpContext();
 
        //
        // GET: /User/
 
        public ActionResult Index()
        {
            return View(db.Persons.ToList());
        }
 
        //
        // GET: /User/Details/5
 
        public ActionResult Details(int id = 0)
        {
            User user = (User)db.Persons.Find(id);
            if (user == null)
            {
                return HttpNotFound();
            }
            return View(user);
        }
 
        //
        // GET: /User/Create
 
        public ActionResult Create()
        {
            return View();
        }
 
        //
        // POST: /User/Create
 
        [HttpPost]
        public ActionResult Create(User user)
        {
            if (ModelState.IsValid)
            {
                db.Persons.Add(user);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
 
            return View(user);
        }
 
        //
        // GET: /User/Edit/5
 
        public ActionResult Edit(int id = 0)
        {
            User user = (User)db.Persons.Find(id);
            if (user == null)
            {
                return HttpNotFound();
            }
            return View(user);
        }
 
        //
        // POST: /User/Edit/5
 
        [HttpPost]
        public ActionResult Edit(User user)
        {
            if (ModelState.IsValid)
            {
                db.Entry(user).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(user);
        }
 
        //
        // GET: /User/Delete/5
 
        public ActionResult Delete(int id = 0)
        {
            User user = (User)db.Persons.Find(id);
            if (user == null)
            {
                return HttpNotFound();
            }
            return View(user);
        }
 
        //
        // POST: /User/Delete/5
 
        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            User user = (User)db.Persons.Find(id);
            db.Persons.Remove(user);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
 
        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }
}
J'ai déjà du transtyper en User mais lorsque j'atteinds l'url:
http://localhost:52991/user
J'ai cette exception:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Détails de l'exception: System.InvalidOperationException: L'élément de modèle passé dans le dictionnaire est de type « System.Collections.Generic.List`1[erp.Models.Person] », mais ce dictionnaire requiert un élément de modèle de type « System.Collections.Generic.IEnumerable`1[erp.Models.User] ».
Si quelqu'un pouvait m'éclairer sur l'erreur que j'ai faite
Merci