J'ai une classe BLL qui contient des propriétés pour les champs d'une table de pays (CountryCode, CountryName, etc.). Il a aussi une propriété ioDAL, qui est une référence à une classe DAL (créée avec SubSonic 2.2), qui a les mêmes champs nommés.Problème lors de l'utilisation d'AutoMapper pour mapper les propriétés DAL aux propriétés BLL
J'ai une méthode LoadRecord() qui appelle la méthode FetchById() du DAL qui remplit les propriétés DAL en appelant la base de données (SQL Server 2005 FWIW). Ce que je veux ensuite faire, plutôt que d'écrire du code pour remplir chaque propriété BLL à partir de son équivalent DAL, est d'utiliser AutoMapper (à partir de CodePlex). Je pense que la ligne devrait être quelque chose comme
Mapper.CreateMap(ioDAL, Me)()
mais cela donne des erreurs « Valeur de type (classe DAL/dénomination d'espace de noms) ne peut pas être converti en« System.Type » et « Valeur de type (classe/espace de noms BLL nommage) ne peut pas être converti en 'System.Type' ".
Quelqu'un peut-il me donner un guide sur ce que devrait être cet appel? (VB.NET VS2005)
EDIT 13-Jan-10 - Jimmy m'a demandé de montrer un peu plus de code:
Imports System
Imports System.ComponentModel
Imports AutoMapper
Public Class Country_POCO_Business
' Define property as reference to the relevant DAL class
Public Property ioDAL() As DAL_VB.Test.Country
' rest of property definition here...
End Property
Public Property CountryPk() As String
' rest of property definition here...
End Property
' and so on for other field properties...
Function LoadRecord(ByVal tcPK As String) As Boolean
ioDAL = DAL_VB.Test.Country.FetchByID(tcPK)
If ioDAL.CountryPk = tcPK Then
' set the values for the B/O properties from the DAL equivalents
' THIS IS WHERE THE ERROR OCCURS...
Mapper.CreateMap(ioDAL, Me)()
Return True
Else
Return False
End If
End Function
End Class
Désolé pour le délai de réponse - nous venons tout juste d'y revenir. J'ai peur que la dernière version du contrôle de source donne toujours la même erreur. Je ne suis pas sûr que je suis votre autre suggestion. Cette application est divisée en plusieurs couches, le code en question est dans la BLL (bibliothèque de classes). Cela peut évidemment être appelé à partir de plusieurs applications, donc je ne sais pas où mettre votre suggestion de surcharge. – kevinw
Pourriez-vous poster un petit extrait de code qui démontre le problème, pour que je puisse le reproduire de mon côté? De plus, une trace de pile m'aiderait vraiment. Merci! –
@Jimmy - très désolé pour le retard dans la réponse, ont été assignés ailleurs dans l'intervalle. J'ai maintenant édité ma question originale pour donner un aperçu de la classe; VS2005 donne les erreurs "Valeur de type DAL_VB.Test ne peut pas être converti en 'System.Type'" et "Valeur de type BLL.Country_POCO_Business ne peut pas être converti en 'System.Type'" sur Mapper.CreateMap (ioDAL, Me) () ligne. – kevinw