Der Typ 'System.Data.Linq.DataContext' ist in einer Assembly definiert, auf die nicht verwiesen wird

7

Das Problem

Fehler beim Wechseln zu einer bestimmten Seite (im lokalen Debug): CS0012: Der Typ 'System.Data.Linq.DataContext' ist in einer Assembly definiert, auf die nicht verwiesen wird. Sie müssen der Assembly 'System.Data.Linq, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' einen Verweis hinzufügen.

Hier sind die referenzierten Codezeilen in der Fehlermeldung:

Zeile 28:
Zeile 29:
Zeile 30: Öffentliche Klasse _Page_Views_blah_granny_cshtml: System.Web.Mvc.WebViewPage {
Zeile 31:
Zeile 32: #line versteckt

Alle anderen Seiten funktionieren gut - das passiert nur beim Zugriff auf eine bestimmte Seite. Die Referenz funktioniert auf allen anderen Seiten. Soweit ich feststellen kann, ist dies kein Problem mit der Referenz.

Ich habe einen guten Block Zeit damit verbracht, dieses Problem zu untersuchen.

Alle Antworten, die ich gefunden habe, schlugen vor, zu web.config zu gehen und eine Assembly-Referenz auf linq in system.web & gt; Konfiguration & gt; Baugruppen. Bei mir sind keine Baugruppen aufgeführt, und ich vermute, dass dies eher für ältere Versionen gilt. Ich habe es trotzdem getan. Es gab mir einen weiteren Fehler, dass es keine Ahnung hat, was man mit Assemblies machen soll.

Ich habe system.data.linq gelöscht und neu hinzugefügt.

Ich habe VS und meinen Computer neu gestartet.

Mein Code - wie standardmäßig von VS generiert - hat System.Linq.

Hintergrund - So begann dies:

Die Anwendung ist MVC 4, C #.

Ich habe eine neue Klasse in meinem DataContext erstellt, einen neuen Controller hinzugefügt und eine stark typisierte Ansicht erstellt.

Hier ist ein sehr ähnlicher Code (wahrscheinlich nicht nötig, aber nur für den Fall).

Zwei Klassen:

%Vor%

Hier ist der Controller:

%Vor%

Nichts Besonderes dort.

Die Seite ist eine typische Rasiereransicht, stark typisierte "Liste" ... sie hat eine Tabelle, die iteriert, um sie zu erstellen und dabei die Daten zu speichern.

Ich freue mich, Ihnen bei Bedarf zusätzlichen Code zur Verfügung zu stellen.

Ich habe mich nicht mit web.config beschäftigt. Ich habe keine der Referenzen auf den Seiten entfernt oder optimiert. Alle anderen Ansichten funktionieren wunderbar.

Wenn ich es lokal starte und versuche, nach / oma zu gehen, erhalte ich den obigen Fehler.

Danke für Ihre Hilfe!

DIE LÖSUNG : Ich ging in Referenzen, und für die System.Linq (oder für ältere Versionen, nehme ich an, System.Data.Linq) und änderte CopyLocal auf True.

    
shubniggurath 25.03.2013, 17:49
quelle

3 Antworten

21

Das hat für mich funktioniert:

  • Navigieren Sie zum Knoten Referenzen des Webprojekts
  • Suchen Sie den Verweis auf System.Data.Linq
  • Öffnen Sie das VS-Eigenschaftenfenster
  • Ändern Sie im Eigenschaftsfenster die Option Lokal kopieren: Falsch in Wahr

Zuvor wurde die Datei System.Data.Linq.dll nicht in das Verzeichnis bin kopiert. (Das manuelle Kopieren in das bin-Verzeichnis löste auch den Fehler)

    
Chris F Carroll 18.12.2015, 13:34
quelle
8

MVC kann Ihre Ansicht nicht im Handumdrehen kompilieren. Ihre Sicht enthält einen Verweis auf einen DataContext. Das Hinzufügen eines Verweises in web.config sollte den Compiler anweisen, nach der Datei zu suchen:

%Vor%

  

Hinweis: Die Assembly sollte unter dem Kompilierungselement hinzugefügt werden.

Können Sie Ihre Ansicht, Controller und Datacontext-Code teilen?

    
Alexandr Mihalciuc 03.04.2013 19:56
quelle
7

Versuchen Sie @using System.Data.Linq oben in Ihrer Problemansicht hinzuzufügen und   <add namespace="System.Data.Linq" /> in <pages> Abschnitt von web.config in Ihrem Ordner Ansichten .

    
Victor Petrykin 03.04.2013 07:47
quelle