2009-10-09 12 views
3

Bonjour, je reçois une exception lorsque j'essaie d'initialiser ActiveRecord et je n'arrive pas à comprendre ce qui me manque. J'essaie de convaincre la société pour laquelle je travaille d'utiliser Castle ActiveRecord et ça ne sera pas très bien si je ne peux pas montrer comment cela fonctionne. J'ai déjà travaillé sur des projets avec Castle ActiveRecord et je n'avais jamais rencontré ce problème auparavant.Castle ActiveRecord "Impossible de compiler le document de mappage: (chaîne)"

Merci pour votre aide

L'exception que je reçois est

Stack Trace:

à Castle.ActiveRecord.ActiveRecordStarter.AddXmlString (de config de configuration, xml String, modèle ActiveRecordModel) au château .ActiveRecord.ActiveRecordStarter.AddXmlToNHibernateCfg (titulaire ISessionFactoryHolder, modèles ActiveRecordModelCollection) à Castle.ActiveRecord.ActiveRecordStarter.RegisterTypes (titulaire ISessionFactoryHolder, source IConfigurationSource, types IEnumerable`1, Boo lean ignoreProblematicTypes) à Castle.ActiveRecord.ActiveRecordStarter.Initialize (source IConfigurationSource, types []) à ConsoleApplication1.Program.Main (String [] args) dans C: \ Projects \ CastleDemo \ ConsoleApplication1 \ Program.cs: ligne 20 à System.AppDomain._nExecuteAssembly (assemblage de montage, String [] args) à System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args) à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() à System.Threading.ThreadHelper.ThreadStart_Context (état de l'objet) at System.Threading.ExecutionContext.Run (ExecutionContext executionContext, rappel ContextCallback, état de l'objet) at System.Threading.ThreadHelper.ThreadStart()

Exception interne:

{ "Impossible de compiler le document de mapping: (string)"}

est en dessous de mon fichier de configuration:

<add 
    key="connection.driver_class" 
    value="NHibernate.Driver.SqlClientDriver" /> 
<add 
    key="dialect" 
    value="NHibernate.Dialect.MsSql2000Dialect" /> 
<add 
    key="connection.provider" 
    value="NHibernate.Connection.DriverConnectionProvider" /> 
<add 
    key="connection.connection_string" 
    value="Data Source=SPIROS\SQLX;Initial Catalog=CastleDemo;Integrated Security=SSPI" /> 
<add 
    key="proxyfactory.factory_class" 
    value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" /> 

et c'est la principale méthode qui exécute l'initialisation:

static void Main(string[] args) 
    { 
     //Configure ActiveRecord source 
     XmlConfigurationSource source = new XmlConfigurationSource("../../config.xml"); 
     // 

     //Initialazi ActiveRecord 
     ActiveRecordStarter.Initialize(source, typeof(Product)); 
     // 

     //Create Schema 
     ActiveRecordStarter.CreateSchema(); 
     // 
    } 
+0

ce genre d'erreur pourrait être lié à la requête nommée ou identificateurs de mappage contenant (xml) caractères offensants – smoothdeveloper

Répondre

5

OK .. obtenu ce travail.

La version d'un NHibernate dont j'ai besoin doit avoir "hiberner" dans les attributs clés.

exemple

Au lieu de cela:

<add 
    key="connection.driver_class" 
    value="NHibernate.Driver.SqlClientDriver"/> 

faire comme ceci:

<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />

Pour la version plus récente de NHibernate les œuvres opposées.

0

ne vous invite votre Visual Studio lorsque vous tapez: value = « NHibernate.Driver.SqlClientDriber » ....

+0

Ouvrez une nouvelle question plutôt que d'en poser une sur cette page. L'accent sur cette page est d'obtenir une réponse, pas une autre question. – Phil

+0

Bienvenue sur SO. Probablement une question est donnée dans une boîte de réponse. Veuillez utiliser le bloc approprié pour poser une question! – Luv