2017-09-19 8 views
0

J'ai une requête qui sélectionne une liste de subrep. La requête ressemble à ceci:Le type d'entité ne fait pas partie du modèle pour le contexte actuel - DBFirst

Public Async Function ReturnSubRepsAsync(user As BaseUser) As Task(Of IList(Of SubRep)) Implements IGeneralAccountManagementRepository.ReturnSubRepsAsync 
     'The entity type SubRep is not part of the model for the current context. 
     Using webDataDBContext As New WebDataEntities() 
      'So here it just has an SQL query which it will execute when requested 
      Dim subReps = webDataDBContext.Subreps.Where(Function(x) x.CID = user.CID) 

      If (String.IsNullOrEmpty(user.Password) = False) Then 
       'Add another where onto the SQL query 
       subReps = subReps.Where(Function(x) x.HASH_PASSWORD = user.PasswordHash) 
      End If 

      If (String.IsNullOrEmpty(user.Username) = False) Then 
       'Add another where onto the SQL query 
       subReps = subReps.Where(Function(x) x.username = user.Username) 
      End If 

      'Execute the query 
      Return Await subReps.ToListAsync() 
     End Using 
    End Function 

maintenant en raison de l'entité base de données-cadre ne comprenant pas la validation, comme MaxLength sur les chaînes, je décide de suivre ce tutoriel: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/database-first-development/enhancing-data-validation

Et ajouter une autre classe publique partielle qui utilise un MetaDataType mettre en œuvre la validation. Maintenant, pendant le débogage, j'ai pensé que c'était un problème avec une colonne, donc j'ai décidé de commenter tout le code dans ma classe partielle pour tester si ça fonctionne, donc je ne suis pas parti avec une enveloppe vide d'une classe partielle. Il n'a pas fait de différence, il reste des erreurs sur le premier où de ma requête.

Mon Entity Framework classe générée ressemble à ceci:

Partial Public Class Subrep 
    Public Property id As Integer 
    Public Property CID As String 
    Public Property username As String 
    Public Property LastName As String 
    Public Property FirstName As String 
    Public Property MIddleInitial As String 
    Public Property Address As String 
    Public Property Address2 As String 
    Public Property City As String 
    Public Property State As String 
    Public Property Zip As String 
    Public Property HomePhone As String 
    Public Property EmailAddress As String 
    Public Property InActive As String 
    Public Property CellPhone As String 
    Public Property StartDate As String 
    Public Property AuditName As String 
    Public Property Background As String 
    Public Property FDCPA As String 
    Public Property Choicepoint As String 
    Public Property Badge As String 
    Public Property ConfAgree As String 
    Public Property NCCI_OK As String 
    Public Property InactiveRepNo As String 
    Public Property Approved As String 
    Public Property DateApproved As String 
    Public Property Denied As String 
    Public Property DateDenied As String 
    Public Property DeniedNotes As String 
    Public Property DOB As String 
    Public Property SSN As String 
    Public Property MegansLaw As String 
    Public Property MASTER As String 
    Public Property VACATION As String 
    Public Property FC_DEFAULT_FEE As Nullable(Of Decimal) 
    Public Property LM_DEFAULT_FEE As Nullable(Of Decimal) 
    Public Property MAS90 As String 
    Public Property SOS As String 
    Public Property HASH_PASSWORD As String 
    Public Property changepass As String 
    Public Property NOTIFICATION_OFF As String 
    Public Property Capacity As String 
    Public Property internalqc As String 
    Public Property New_Rep As String 
    Public Property Stand_By As String 
    Public Property Vacation_Start_date As Nullable(Of Date) 
    Public Property Vacation_End_date As Nullable(Of Date) 
    Public Property sub_coreIP As String 
    Public Property rating As String 
    Public Property date_last_updated As Nullable(Of Date) 

End Class 

Et ma classe partielle séparée qui est censé être utilisé pour la validation ressemble à ceci:

Partial Public Class SubRep 
End Class 

Ainsi, même si elle est vide I obtenir l'erreur répertoriée dans le titre. J'ai réussi à travailler avec plusieurs entités parfaitement bien.

Répondre

0

Juste wow. Donc, avec visual studio intellisense si vous appuyez sur F12 pour essayer de trouver des références, il a mis en évidence les deux classes partielles Subrep et SubRep, ce qui vous amènerait à croire que les deux étaient associés les uns aux autres. Il s'avère qu'à cause de la majuscule R dans la deuxième classe partielle SubRep, il n'est pas associé au modèle et doit donc correspondre au cas de l'entité Subrep. Comme ceci:

Partial Public Class Subrep 
End Class 

Ce qui est encore plus étrange est que la propriété dans mon DBContext utilise une majuscule SubRep. Comme ceci:

Public Overridable Property Subreps() As DbSet(Of SubRep)