2011-01-17 6 views
0

Je travaille avec EF Code First pour la première fois et j'ai de la difficulté à en déduire les relations entre mes types. Compte tenu de ces deux types:Problème avec le code EF Première inférence de clé étrangère

<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 

et

<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 

je peux charger et enregistrer des données en utilisant la classe DbContext, mais quand je tente d'accéder GroupType.GroupDefinitions ou GroupDefinition.GroupType, ils reviennent à la fois rien. Ma classe DbContext est ici:

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 

Il ne semble pas y avoir beaucoup de documentation sur l'inférence clé, mais je ne trouve cette blog post et il semble que mes classes suivent les règles d'inférence automatique.

Quelqu'un pourrait-il me diriger dans la bonne direction?

+0

Veuillez montrer le code qui ne fonctionne pas comme prévu. Merci. –

Répondre

0

Je l'ai compris. J'avais une méthode SelectOne qui créait le DbContext localement. J'ai créé le contexte dans le code appelant et l'ai passé à SelectOne, et tout fonctionne maintenant. Merci tout le monde.

0

Essayez d'ajouter

Public Property GroupTypeID As Integer 

à votre classe de GroupDefinition.

Même s'il ne devrait pas être nécessaire, et n'était pas nécessaire dans les versions antérieures, il semble que la version CTP5 de EF nécessite une définition un peu plus explicite afin de pouvoir détecter les relations. Personnellement, j'espère qu'ils régleront cela avant RTM.

+0

Merci, mais j'ai déjà cette propriété dans ma classe. – Roger

Questions connexes