CS0012: The type ‘System.Data.Objects.DataClasses.EntityObject’ is defined in an assembly that is not referenced.

En créant une vue typée dans une application MVC vers une classe qui fait référence à un objet d’Entity Framework, vous tomberez probablement sur l’erreur suivante :

Compiler Error Message: CS0012: The type ‘System.Data.Objects.DataClasses.EntityObject’ is defined in an assembly that is not referenced. You must add a reference to assembly ‘System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.

Votre premier réflexe est donc de vérifier les références dans ce projet, et d’ajouter « System.Data.Entity » à votre application MVC. Pourtant en retournant sur votre vue typée qui pose souci, le problème est toujours présent. Il faut en plus ajouter la référence dans votre fichier web.config :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<compilation debug="true">
  <assemblies>
     <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=B77A5C561934E089"/>
     <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, 
        PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=B77A5C561934E089"/>
     <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=B77A5C561934E089"/>
     <add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=B77A5C561934E089" />
   </assemblies>
</compilation>

Et le souci est corrigé. Si jamais vous utilisez .NET 4.0, remplacez 3.5 par 4.0.