Announcement

Collapse
No announcement yet.

Fremdschlüssel mit EntityFramework 3.5

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fremdschlüssel mit EntityFramework 3.5

    Hallo,

    heute habe ich folgendes Problem.

    Ich habe eine Forms Anwendung bei der ich zwingend das Framework in der Version 3.5 einsetzen muß.

    Jetzt benötige ich aber in einer verknüpften Tabelle den Fremdschlüssel für eine Combobox im Datagridview.
    Leider gibt es im Entity-Framework in der Version 3.5 noch nicht die Möglichkeit den Fremdschlüssel sichtbar zu machen.
    Als Alternative wollte ich gerne in der partiellen Klasse der Entität eine eigene Property implementieren die genau dies nachbildet.

    Ich habe das ganze mal zur Demonstartion am Beispiel der Nordwind-Datenbank nachgestellt.

    Als Verknüpfung wähle ich Artikel -> Kategorie
    Der Fremdschlüssel im Artikel soll als KategorieNr auftauchen.

    Hier der Beispielcode:
    [highlight=vbnet]
    Partial Public Class Einzelartikel
    Public Property KategorieNr() As Integer
    Get
    Dim key As EntityKey
    If Me.Kategorien Is Nothing Then
    Return Nothing
    End If
    If Me.Kategorien.EntityKey Is Nothing Then
    Return Nothing
    End If
    key = Me.Kategorien.EntityKey
    Return CType(key.EntityKeyValues(0).Value, Integer)
    End Get

    Set(ByVal value As Integer)
    Dim key As EntityKey
    Me.OnPropertyChanging("KategorieNr")
    Try
    key = New EntityKey("NordwindSQLEntities.Kategorien", "KategorieNr", CType(value, Object))
    Me.Kategorien.EntityKey = key

    Catch ex As Exception
    Debug.Print(ex.Message)
    End Try
    Me.OnPropertyChanged("KategorieNr")
    End Set
    End Property

    End Class
    [/highlight]

    Der Getter funktioniert auch einwandfrei.
    Beim Setter wird eine Exception in der Zeile
    Code:
                    Me.Kategorien.EntityKey = key
    geworfen.

    Der Fehlertext ist folgender:
    "Die EntityKey-Eigenschaft kann nur festgelegt werden, wenn der aktuelle Wert der Eigenschaft NULL ist."

    Da hört mein Verständnis auf

    Hat hier jemand einen Tipp.

    Danke schon mal für Eure Hilfe

    Roland
    Zuletzt editiert von RolandF; 10.12.2010, 11:26. Reason: Codeformatierung geändert

  • #2
    richtige Kategorie?

    bin ich eigentlich in der richtigen Kategorie mit diesem Thema, oder hätte ich besser unter "ADO.NET" schreiben sollen?

    Comment


    • #3
      gelöst

      habe gerade meinen Fehler selbst gefunden:

      folgender Codepart wurde ersetzt
      Code:
      Me.Kategorien.EntityKey = key
      durch
      Code:
      Me.KategorienReference.EntityKey = key

      Comment

      Working...
      X