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
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
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
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
Comment