Ich habe meinem Projekt ein neues ADO.Net-Entitätsdatenmodell hinzugefügt und mithilfe des Aktualisierungsassistenten Tabellen zum Modell hinzugefügt . Fünf der ausgewählten Tabellen wurden der Entwurfsoberfläche hinzugefügt. Zwei weitere Tabellen werden nicht hinzugefügt. Ich wähle sie im Assistenten aus und klicke auf Fertig stellen, aber sie werden nie auf der Entwurfsoberfläche angezeigt.
Ist dies ein Fehler oder gibt es Situationen, in denen dem Modell keine Tabelle hinzugefügt werden kann (beabsichtigt)?
UPDATE: Das XML (* .edmx) zeigt das Problem.
<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not
have a primary key defined and no valid primary key could be inferred.
This table/view has been excluded. To use the entity you will need to
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
<Property Name="role_id" Type="decimal" />
<Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->
.net
visual-studio-2008
entity-framework
ado.net
primary-key
Robert Claypool
quelle
quelle
Antworten:
Die Entwurfsoberfläche unterscheidet sich vom Entitätsmodell. Es ist möglich, eine Tabelle in der Zuordnung in Ihrem EDMX zu haben, die nicht auf der Entwurfsoberfläche angezeigt wird. Zeigen Sie die Datei als XML an, um festzustellen, ob dies der Fall ist. In diesem Fall können Sie mit dem Aktualisierungsassistenten die Tabellen nicht erneut hinzufügen, da sie bereits Teil des Entitätsmodells sind. Im Allgemeinen weiß der Update-Assistent mehr über Ihr Entitätsmodell als über die Entwurfsoberfläche an sich .
Ich denke nicht, dass dies genau die Situation ist, in der Sie sich befinden, aber es sollte Ihnen die allgemeine Idee für die Lösung geben: Gehen Sie in das XML und suchen Sie nach Verweisen auf die fraglichen Tabellen.
quelle
Setzen Sie Primärschlüssel auf alle Tabellen oder nur ein deaktiviertes Kontrollkästchen "Zulassen null" für eine Spalte jeder Tabelle. Für mich geht das :)
quelle
1.Ändern Sie die Tabellenstruktur und fügen Sie eine Primärspalte hinzu. Aktualisieren Sie das Modell.
2. Ändern Sie die EDMX-Datei im XML-Editor und versuchen Sie, eine neue Spalte unter dem Tag für diese bestimmte Tabelle hinzuzufügen. (WIRD NICHT FUNKTIONIEREN)
3. Anstatt eine neue Primärspalte zum Beenden der Tabelle zu erstellen, erstelle ich einen zusammengesetzten Schlüssel, indem alle vorhandenen Spalten einbezogen werden. (ARBEITET)
Entity Framework: Hinzufügen von DataTable ohne Primärschlüssel zum Entity Model.
quelle
Ich hatte auch dieses Problem, all das hat bei mir nicht funktioniert. Was mir geholfen hat, war das Folgende.
Wenn Sie versuchen, eine Verbindung mit einer Datenbank herzustellen, kann diese Datenbank unterschiedliche Benutzer mit unterschiedlichen Anmeldeinformationen haben, die sie akzeptieren kann. Angenommen, Benutzer A bis D.
Wenn Sie versuchen, eine Verbindung mit einem Benutzer herzustellen, stellen Sie sicher, dass für den Benutzer die richtigen Anmeldeinformationen aktiviert sind. In diesem Fall sind die Lese- und Schreiboptionen aktiviert.
Starten Sie dazu MS SQL Server Managment Studio, das mit Ihrem SQL Server verbunden ist, und wählen Sie die Datenbank aus, mit der Sie in Visual Studio eine Verbindung herstellen möchten. Unter 'Ihr_Datenbankname' -> Sicherheit -> Benutzer finden Sie eine Liste der Benutzer. Klicken Sie mit der rechten Maustaste auf den Benutzernamen, mit dem Sie sich anmelden möchten, und wählen Sie Eigenschaften aus. Ein Fenster öffnet sich. Wählen Sie die Seite 'Allgemein' (standardmäßig ausgewählt) und stellen Sie unter der Registerkarte 'Mitgliedschaft in der Datenbankrolle' sicher, dass 'db_datareader' und 'db_datawrite' ausgewählt sind.
Hinweis: Wenn Sie sich auch bei MS SQL Server Managment Studio anmelden, stellen Sie sicher, dass Sie sich bei einem Benutzer anmelden, der diese Optionen aktivieren / deaktivieren kann ...
quelle
Suchen Sie in Ihrer Tabelle nach 'Nullen'. Wenn alle Spalten auf "Null zulassen" gesetzt sind, wird sie vom Entity Framework als "Null" -Tabelle betrachtet. Ich hatte das gleiche Problem und deaktivierte 'Allow Null' und fügte die erforderliche Tabelle hinzu.
quelle
Tabellen ohne Primärschlüssel werden nicht hinzugefügt.
quelle
Meine Lösung besteht darin, das gesamte Modell zu löschen und es einschließlich der gewünschten neuen Tabellen zu lesen.
Ich habe versehentlich einmal eine Tabelle im Designer gelöscht und konnte sie nicht lesen. Entfernen Sie daher das gesamte Modell und lesen Sie es.
Ich hatte auch einige Probleme damit ( Ado.Net-Entitätsdatenmodell wird nicht korrekt aktualisiert )
quelle
Dies wurde in der neuesten Version behoben (Umgebung: VS 2012, .net Framework 4.5). Öffnen Sie einfach die .edmx-Datei und fügen Sie die erforderlichen Tabellen / gespeicherten Prozeduren / Ansichten hinzu. Die Tabelle / Ansicht ohne Primärschlüssel wird als schreibgeschützte Tabelle / Ansicht erstellt.
quelle
Sie müssen nicht das gesamte Modell löschen (das können Hunderte von Tabellen sein!).
Der Assistent kann "neue" Elemente hinzufügen, aber einige Änderungen wie das Ändern von zusammengesetzten Schlüsseln und das Umbenennen von Spalten - er weiß nicht, was zu tun ist - versucht es also nicht - und die Dinge werden nicht mehr synchronisiert.
SO: LÖSCHEN Sie die betreffenden Tabellen aus dem Modell (konzeptioneller Modus) UND aus dem Model.Store. Aktualisieren Sie das Modell dann mit dem Assistenten und fügen Sie nur die betreffenden Tabellen erneut hinzu.
quelle
Werfen Sie einfach ein paar Details für alle heraus, die dies noch nicht getan haben. Ich verwende Visual Studio 2013 mit installiertem Update 4. Ich habe einer Tabelle einige Felder hinzugefügt, die Tabelle aus meinem Modell gelöscht und bin dann zur Aktualisierung gegangen, sodass ich keine der Tabellen überprüfen konnte.
Ich habe einen Primärschlüssel.
Ich habe eine neue Testtabelle erstellt, die angezeigt wurde und die es mir ermöglichen würde, sie zu überprüfen, aber nicht mein Original.
Ich habe es noch nie in XML geöffnet und wusste nicht, wie das geht. Sie klicken mit der rechten Maustaste auf die .edmx-Datei und "öffnen mit" - wählen Sie den XML-Editor.
Der fragliche Tisch war in Ordnung, er hatte sogar die neuen Felder (seltsam).
Ich habe alle Verweise darauf gelöscht (hat ein paar Mal gedauert) - nachdem Sie einen gelöscht und gespeichert haben, wenn Sie versuchen, ihn zu öffnen und er nicht angezeigt wird, wählen Sie einfach "XML anzeigen" - sehen Sie sich die Fehler an und im Grunde Folgen Sie dem springenden Ball, bis Sie ihn aufgeräumt haben.
Ich hoffe, das zusätzliche Detail hilft jemandem.
Joe
quelle
Eine einfache Möglichkeit, die ich gefunden habe, bestand darin, (in SQL Server Management Studio) eine ID-Spalte vom Typ INT hinzuzufügen, die Option "Nullen zulassen" zu deaktivieren und unter Spalteneigenschaften (der ID) >> Identitätsspezifikation >> die Option (Ist Identität) zu überprüfen und zu erstellen sicheres Inkrement eingestellt.
Sobald dies erledigt ist, kehren Sie zu Ihrem .edmx-Fenster zurück, klicken Sie mit der rechten Maustaste und aktualisieren Sie das Modell aus der Datenbank.
quelle
Sie können eine Kreuztabelle für Primärschlüsselspalten hinzufügen. Dann löst sich das Problem
quelle