2009-10-01 14 views
15

Ho una soluzione con tre progetti.La combinazione di ADO.NET Entity Framework e ASP.MVC è errata per caso?

  1. domain model (C# Biblioteca con ADO.NET Entity Framework)
  2. DomainModelTest (Unit Testing for Business Logic)
  3. WebApp (Usando domain model)

Per qualche ragione, non riesco nemmeno a portare la vista se passo nessuno degli oggetti in DomainModel, nemmeno semplice. Ho ricevuto l'errore seguente:

Qualche idea?

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'.

Source Error:

Line 146: Line 147:
[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()] Line 148: public class views_home_index_aspx : System.Web.Mvc.ViewPage, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler { Line 149:
Line 150: private static bool @__initialized;

ho pensato che questo potrebbe essere utile, l'errore effettivo arriva sul file Default.aspx nella linea di rilevare sotto:

public partial class _Default : Page 
{ 
    public void Page_Load(object sender, System.EventArgs e) 
    { 
     // Change the current path so that the Routing handler can correctly interpret 
     // the request, then restore the original path so that the OutputCache module 
     // can correctly process the response (if caching is enabled). 

     string originalPath = Request.Path; 
     HttpContext.Current.RewritePath(Request.ApplicationPath, false); 
     IHttpHandler httpHandler = new MvcHttpHandler(); 
     httpHandler.ProcessRequest(HttpContext.Current); //**HERE** 
     HttpContext.Current.RewritePath(originalPath, false); 
    } 
} 
+0

Hai aggiunto il riferimento a System.Data.Entity nel tuo progetto web? – JasonTrue

+0

@ Jason. Si l'ho fatto. L'ho rimosso, lo ho aggiunto nuovamente, anche controllato la versione, ho anche provato a usare le istruzioni nel homecontroller. Ho persino pensato che fosse il mio punto di vista, quindi li cancello e li ricreavo. Quando non fanno riferimento agli oggetti creati dal frammento di ado.net enti, tutto va bene, non appena provo gli utenti o qualsiasi altro oggetto, si verifica un errore di compilazione. Grazie. – Geo

+0

Qui ho trovato la risposta come ha risolto il problema di compilazione [http://stackoverflow.com/a/5129828/305197][1] [1]: http://stackoverflow.com/ a/5129828/305197 –

risposta

27

Prova ad aggiungere il riferimento nel web.config, nel < assiemi> sezione.

+0

Grazie !!!! Ho passato circa 1,5 ore su questo da solo. È un bug noto? Grazie comunque. – Geo

+1

Non penso che lo definirei un bug ... Includere il riferimento nel progetto è il primo passo. Se si desidera utilizzarlo in un controller, è necessario avere un'istruzione 'using', se si desidera utilizzarlo in una vista deve essere nel web.config o importato in modo dichiarativo nel markup della vista. Ho sbattuto la testa anche su di esso un paio di volte, ma ora ho imparato la lezione :) –

+1

@ AJ, sono praticamente dell'opinione che questo sia un bug. Normalmente quando aggiungo un riferimento a un'app Web, devo solo aggiungerlo una volta. – ProfK

15

In web.config Aggiungere questo

<configuration> 
    <system.web> 
    <compilation> 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"/> 
     </assemblies> 
    </compilation> 
    </system.web> 
</configuration> 
1

È inoltre possibile aggiungere un vuoto ADO.NET Entity Data Model per il vostro web-progetto e quindi eliminarlo. Aggiungerà i riferimenti necessari per te.

Problemi correlati