2011-05-15 1 views
2

Je suis en train de suivre this tutoriel, mais VS débogueur me demandent un fichier nommé FluentConfiguration.cs quand il arrive à cette ligne:Essayer de faire fonctionner NHibernate, qu'est-ce que FluentConfiguration.cs?

return Fluently.Configure() 
    .Database(MySQLConfiguration.Standard 
    .ConnectionString(c => c 
     .Server("localhost") 
     .Database("test") 
     .Username("root") 
     .Password("w1e2a3r4"))) 
    .Mappings(m => m 
     .AutoMappings.Add(model)) 
    .ExposeConfiguration(BuildSchema) 
     .BuildSessionFactory(); 

Tout mon code est tout à fait identique à celui du tutoriel, sauf pour cette ligne (j'utilise MySQL). Je triple vérifié les paramètres et il devrait être ok ..
Ce que je reçois est une boîte de dialogue me demandant de localiser FluentConfiguration.cs, et quand il ne parvient pas à le trouver lui donne:

An invalid or incomplete configuration was used while creating a SessionFactory.  
Check PotentialReasons collection, and InnerException for more detail. 

J'ai essayé de copier ce fichier de here, mais cela n'a pas fonctionné aussi bien.

Qu'est-ce qui me manque ici?
technique Info- J'utilise express VS 2010, ASP.NET MVC3, serveur MySQL 5.5 et connecteur: 6.3.6

Edit:
C'est le message de l'exception interne:
Impossible de créer la pilote de NHibernate.Driver.MySqlDataDriver, NHibernate, Version = 2.1.2.4000, Culture = neutre, PublicKeyToken = aa95f207798dfdb4.

Edit 2:
Maintenant, je reçois « somme de contrôle ne correspond pas à:
Localisation source 'd: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs' checksum. MD5 {94 f4 4c 43 49 bd 48 fb 9a d7 b2 fc 5 e1 4e d8} Déterminer si la somme de contrôle correspond aux emplacements suivants: 1: C: \ Users \ Oren \ Desktop \ FluentConfiguration.cs Checksum: MD5 {84 33 30 45 11 da 3d 40 8e 2d 3c a9 e 7c cc 14} Checksum ne correspond pas Le fichier 'd: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs' n'existe pas Recherche dans le script documents pour 'd: \ Builds \ FluentNH \ src \ FluentNHibe rnate \ Cfg \ FluentConfiguration.cs '... En recherchant dans' d: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs '. Le fichier a été trouvé dans un projet: 'C: \ Users \ Oren \ Desktop \ FluentConfiguration.cs'. Déterminer si la somme de contrôle correspond aux emplacements suivants: 1: C: \ Users \ Oren \ Desktop \ FluentConfiguration.cs Somme de contrôle: MD5 {84 33 30 45 11 da 3d 40 8e 2d 3c a9 e 7c cc 14} Checksum doesn ' t match. Recherche dans le répertoire 'C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ vc7 \ atlmfc' ... Recherche dans le répertoire 'C: \ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ vc7 \ crt '... Recherche dans le répertoire' C: \ Users \ Oren \ Desktop \ '... Les paramètres de fichiers source de débogage de la solution active indiquent que le débogueur ne demandera pas à l'utilisateur de rechercher le fichier: d: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs. Le débogueur n'a pas pu localiser le fichier source 'd: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs'.

+0

Je soupçonne que votre erreur spécifique est due NHibernate ne pas être en mesure de résoudre l'assembly Mysql.Data (qui est le fournisseur ADO pour Mysql). Essayez d'ajouter ceci à votre chemin de références de projet, ou (moins préférentiellement) de le mettre dans le répertoire de travail de vos binaires – fostandy

+0

Merci pour votre commentaire, je pense que cela m'a fait avancer un peu, mais le problème n'est pas encore résolu. S'IL VOUS PLAÎT se référer à ma deuxième édition. Merci. –

Répondre

1

Copiez-collez à nouveau les dlls et les pdbs d'hibernation courants, et le problème a été résolu.

0

Le débogueur demande l'un des fichiers sources de Fluent nHibernate. Vous pouvez le télécharger car il est open source et le déboguer en détail, bien que la réponse soit dans InnerException.

Ceci est probablement dû à une classe qui n'a pas été mappée ou éventuellement à des propriétés qui ne sont pas marquées comme virtuelles ou simplement à une table de base de données qui ne respecte pas les conventions FNH standard. Vous devez accéder à InnerException et lire ce qu'il dit car les exceptions nHibernate sont généralement très utiles.J'ai eu beaucoup de mal à accéder à l'exception interne lorsque j'essayais d'exécuter des tests unitaires exécutant MSTest. Je suis revenu à nUnit et n'ai eu aucun problème.

Une autre chose très utile à faire est de sortir vos fichiers .hbm pendant le processus de configuration (FNH les génère pour vous dans les coulisses). Voir Generate XML mappings from fluent Nhibernate pour plus de détails. Remarque: généralement, j'ajoute une directive de compilation pour m'assurer que je ne produise que les fichiers .hbm dans les versions de débogage.

+0

Pouvez-vous me diriger sur ce qu'il faut rechercher dans l'exception interne? J'ai ajouté à la question la seule chose que je pensais être utile, mais je ne vois vraiment pas pourquoi. –

+0

@fostandy est correct. L'exception interne indique que le pilote mySQL ne se charge pas correctement. Vous devriez voir si l'assembly est dans le répertoire bin de votre site. –

+0

En ce qui concerne votre deuxième modification, ce message est juste Visual Studio essayant de localiser le fichier source afin qu'il puisse déboguer l'erreur. –

1

pour résoudre ce problème. Je devais ajouter une référence à NHibernate.ByteCode.Castle.dll

Questions connexes