2011-01-17 18 views
0

Ich arbeite zum ersten Mal mit EF-Code zuerst, und ich habe Schwierigkeiten, es zu erhalten, um die Beziehungen zwischen meinen Typen abzuleiten. Vor dem Hintergrund dieser beiden Typen:Problem mit EF-Code Erste Fremdschlüsselrückschluss

<Table("grpGroupType")> 
Public Class GroupType 
    <Key()> 
    Public Property GroupTypeID As Integer 

    <Required()> 
    Public Property IsActive As Boolean 

    <Required()> 
    <MaxLength(100)> 
    Public Property Description As String 

    Public Overridable Property GroupDefinitions() As ICollection(Of GroupDefinition) 
End Class 

und

<Table("grpGroupDefinition")> 
Public Class GroupDefinition 
    <Key()> 
    Public Property GroupDefinitionID As Integer 

    <Required()> 
    Public Property GroupTypeID As Integer 

    <Required()> 
    Public Property IsActive As Boolean 

    <Required()> 
    Public Property ScopeValue As Integer? 

    <Required()> 
    <MaxLength(100)> 
    Public Property Description As String 

    Public Overridable Property GroupType As GroupType 
End Class 

ich laden und Daten speichern Sie die DbContext-Klasse, aber wenn ich versuche GroupType.GroupDefinitions oder GroupDefinition.GroupType zuzugreifen, sie beide nichts zurück. Meine DbContext Klasse ist hier:

Public Class PD 
    Inherits DbContext 

    Public Property GroupDefinitions As DbSet(Of GroupDefinition) 
    Public Property GroupTypes As DbSet(Of GroupType) 

    Protected Overrides Sub OnModelCreating(ByVal modelBuilder As  ModelConfiguration.ModelBuilder) 
    modelBuilder.Entity(Of GroupDefinition)().HasKey(Function(b) b.GroupDefinitionID) 
    modelBuilder.Entity(Of GroupType)().HasKey(Function(b) b.GroupTypeID) 
    End Sub 
End Class 

Es gibt nicht viel Dokumentation über wichtige Folgerung zu sein scheint, aber ich habe diese blog post finden und es scheint, dass meine Klassen, die Regeln für die automatische Schlussfolgerung folgen.

Kann mir jemand in die richtige Richtung zeigen?

+0

Bitte zeigen Sie den Code, der nicht wie erwartet funktioniert. Vielen Dank. –

Antwort

0

Ich fand es heraus. Ich hatte eine SelectOne Methode, die den DbContext lokal erzeugte. Ich habe den Kontext im aufrufenden Code erstellt und an SelectOne übergeben, und alles funktioniert jetzt. Danke an alle.

0

Versuchen Zugabe

Public Property GroupTypeID As Integer 

Um Ihre GroupDefinition Klasse.

Obwohl es nicht benötigt werden sollte, und in früheren Versionen nicht benötigt wurde, scheint es, dass die CTP5-Version von EF eine etwas explizitere Definition benötigt, damit Beziehungen aufgenommen werden können. Persönlich hoffe ich, dass sie das vor RTM beheben.

+0

Danke, aber ich habe diese Eigenschaft bereits in meiner Klasse. – Roger