1: 0:

2009-11-19 20 views
44
Entity Framework One-to-One Zuordnungsprobleme

Verwenden von VS 2010 Beta 2, ASP.NET MVC.1: 0:

Ich habe versucht, eine Entity-Framework-Datei zu erstellen und die Daten aus meiner Datenbank abgerufen.

Es gab einige Probleme mit den Beziehungen, also begann ich die Dinge um zu zwicken, aber ich hielt die folgenden Fehler immer für einfache Eins-zu-eins-Beziehungen

Fehler 1 Fehler 113: Multiplicity ist nicht gültig in der Rolle 'UserProfile' in der Beziehung 'FK_UserProfiles_Users'. Da die Eigenschaften der abhängigen Rolle nicht die Schlüsseleigenschaften sind, muss die Obergrenze der Multiplizität der abhängigen Rolle * sein. myEntities.edmx 2024

Meine Benutzertabelle ist besteht aus einigen anderen many-to-many-Beziehungen zu anderen Tabellen, aber wenn ich versuche, eine mit anderen Tabellen einer Eins-zu-Eins-Beziehung zu machen, dass Fehler erscheinen.

Benutzer Tabelle

  • UserID
  • Benutzername
  • Email

etc ..

Userprofiles Tabelle

  • UserProfileID
  • UserID (FK für Benutzer Tabelle)
  • Ort
  • Geburtstag

Antwort

65

Für eine Eins-zu-eins-Beziehungen erwartet EF, dass die Tabellen der gleichen Primärschlüssel verwenden. Und wirklich, wenn es ein echtes Eins-zu-eins ist, sollten sie wahrscheinlich sein. Wenn Sie in Ihrem Beispiel UserID als Primärschlüssel für die UserProfiles-Tabelle festlegen, funktioniert Ihr Eins-zu-Eins-Vorgang.

+12

Ich habe dieses Problem versucht, eine 0..1 zu 1 Beziehung zwischen einer Haupttabelle und einer Erweiterungstabelle einzurichten. Die Erweiterungstabelle als eine Menge anderer Beziehungen, so will ich nicht mit der PK von diesem zu verwirren. Irgendwelche Ideen, wie man diese Art von Situation löst? – Andreas

+1

@junior: Das ist eine Fremdschlüsselbeziehung und Sie können dorthin gelangen, indem Sie die Beziehung auswählen, in die Eigenschaften gehen und die Einstellungen "End1 Multiplicity" und "End2 Multiplicity" ändern (nicht sicher, ob dies nur VS 2010 ist). Wahrscheinlich setzen Sie "End2 Multiplicity" auf "0..1". –

+0

Es gibt kein * "sollte" *, auch wenn EF normale RA-Multiplizitäten nicht korrekt verarbeiten kann und somit ein perfektes RA-Design geändert werden muss. Das bedeutet nicht, * dass das Modell geändert werden sollte, der aktuelle Fall beiseite - bedeutet, dass EF, und es scheint heute immer noch kaputt, sollte * behoben * sein, um die RA-Datenbank-Domäne korrekt zu modellieren. – user2864740

10

Ich habe ein ähnliches Problem, aber mit einem Verkauf und Layby-Szenario.

Ein Layby kann ohne einen Verkauf existieren, und ein Verkauf kann ohne Layby existieren. Das heißt, ich habe eine 0 oder 1 bis 0 oder 1 Beziehung.

Layby Referenzen Verkauf, aber layby kann nicht den Primärschlüssel des Verkaufs verwenden, und Verkauf kann nicht den Primärschlüssel von Layby verwenden.

löste ich das Problem durch eine 0 oder 1 zu viele Beziehung verwenden, konfiguriert, um das ‚Laybys‘ Getter und Setter auf den Verkauf als privat und bot dann meine eigenen ‚layby‘ Getter und Setter in meiner POCO .

+3

Ich bin neugierig, hast du jemals einen besseren Weg gefunden, diese Art von Beziehung zu erfassen? – Hannele

Verwandte Themen