2012-03-30 10 views
7
ausgewählt wurde

Ich verwende EF4, um Daten aus einer Ansicht zu lesen. Dies ist eine Übersichtsansicht mit Gruppe nach etc und ist schreibgeschützt - es hat keinen Primärschlüssel. Um es in EF4 importieren zu können, habe ich einen oft vorgeschlagenen Trick verwendet - benutze ISNULL (Spalte, -11) als erste Spalte in der Ansicht. Dies hilft EF4, Primärschlüssel abzuleiten und die Ansicht zu importieren.EF4 gibt falsche Werte zurück, wenn aus der Zusammenfassungsansicht

Aber wenn ich aus der Ansicht in EF4 auswählen, geschieht sehr seltsame Sache - ich bekomme falsche Daten als wenn ich direkt aus der Ansicht in Management Studio auswählen. Ich konnte das nicht glauben, also versuchte ich ein paar Mal und der Fehler blieb bestehen. Nur um sicherzustellen, dass ich eine Tabelle in SQL Server erstellt habe, indem Sie alle aus der Ansicht auswählen und auf die Tabelle in EF4 zugreifen. Aber dann gibt richtige Daten zurück!

Die Ansicht ist nicht sehr kompliziert, außer dass es eine Übersichtsansicht (group by mit Joints) ist und einen SQL-Common-Tabellenausdruck verwendet (dh die With-Klausel).

When I select straight in database using select * from vw_responserate I get 

coltext  SurveyId rowtext1 rowtext2   cnt 
Anwender 2 Angestellte/r Französische Schweiz 1 
Anwender 2 Angestellte/r Italienische Schweiz 1 
IT Spezialist 2 Angestellte/r Deutsche Schweiz 1 
IT Spezialist 2 Mittleres Management/Senior Management Italienische Schweiz 1 

When I select from EF4 I get 

coltext rowtext1 rowtext2 cnt 
Anwender  Angestellte/r Französische Schweiz 1 
Anwender  Angestellte/r Französische Schweiz 1 
IT Spezialist Angestellte/r Deutsche Schweiz 1 
IT Spezialist Angestellte/r Deutsche Schweiz 1 

Jede Hilfe

geschätzt würde

dank

+0

Können Sie das erklären? * Ich bekomme falsche Daten, wenn ich direkt aus der Ansicht im Management Studio auswähle. * Wir sehen Ihre Daten nicht und wir wissen nicht, welches falsche Verhalten Sie sehen. –

+0

Hallo Ich habe meine Frage aktualisiert, um Ihre Frage zu beantworten-Bitte werfen Sie einen Blick auf alle Ideen willkommen – josephj1989

+1

Welchen Spaltensatz haben Sie als Schlüssel in EF zugeordnet? –

Antwort

13

hatte ich das gleiche Problem, das Problem ist, dass der Schlüssel für die Ansicht definiert eine einzelne Zeile nicht eindeutig identifizieren.

Wenn Sie sich die Beispieldaten ansehen, sollten Sie Ihr Problem lösen, indem Sie coltext, rowtext1 und rowtext2 als Schlüssel festlegen.

Dies kann durch den Designer geschehen, indem Sie mit der rechten Maustaste auf jede Eigenschaft klicken und 'Entity Key' auswählen.

+0

Vielen Dank! Das war so frustrierend! Ich habe eine Entität, die eine Ansicht darstellt, und aus irgendeinem Grund hat sie mehrere Eigenschaften, die als EntityKeys markiert sind. Ich habe immer wieder Objektfehler bekommen, wenn ich versucht habe, das dbset zu öffnen. Ich könnte die Anzahl der Objekte (.Count) abrufen, aber nicht .ToList. Sobald ich meinen Primärschlüssel als einzigen EntityKey erstellt hatte, funktionierte alles. Danke danke danke!! – Airn5475

+0

Oder mit Code zuerst, überprüfen Sie Ihre Modelldatei und stellen Sie sicher, dass die Direktive [Key] auf den richtigen Feldern ist. –

+0

In einer Ansicht kann dies im Modellbrowser im Bereich Modelle unter Entitäten erfolgen. (Sie können diese Eigenschaft im Abschnitt "Geschäft" anzeigen, aber nicht bearbeiten.) – Greg

Verwandte Themen