2010-11-29 3 views
6

Ich versuche mein allererstes Projekt mit Fluent NHibernate (jeder NHibernate-Geschmack für diese Angelegenheit). Ich habe nicht in der Lage gewesen, über den Punkt bekommen von einer Session Factory-Objekt erstellen, wie ich in der folgenden Ausnahme renne:Fluent NHibernate kann Sitzungsfactory mit SQLCE nicht erstellen

InnerException: NHibernate.HibernateException 
         Message=The IDbCommand and IDbConnection implementation in the assembly System.Data.SqlServerCe could not be found. Ensure that the assembly System.Data.SqlServerCe is located in the application directory or in the Global Assembly Cache. If the assembly is in the GAC, use <qualifyAssembly/> element in the application configuration file to specify the full name of the assembly. 
         Source=NHibernate 
         StackTrace: 
          at NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName, String connectionTypeName, String commandTypeName) 
          at NHibernate.Driver.SqlServerCeDriver..ctor() 
         InnerException: 

ich die neuesten FluentNHibernate Binärdateien verwenden. VS 2010, auf Fenster 7 x64. Ich habe die System.Data.SqlServerCe-Assembly auf "Copy Local" gesetzt und die Zielplattform des Projekts auf x86 geändert.

Die fließend config:

var config = Fluently.Configure() 
         .Database(MsSqlCeConfiguration.Standard.ShowSql().ConnectionString(cnxString)) 
         .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SyncContract>()); 

if (!File.Exists(dbPath)) 
{ 
    var engine = new System.Data.SqlServerCe.SqlCeEngine(cnxString); 
    engine.CreateDatabase(); 

    config.ExposeConfiguration(c => new SchemaExport(c).Create(false, true)); 
} 
return config; 

Hinweis: engine.CreateDatabase() funktioniert gut.

Irgendwelche Hilfe/Ideen bitte?

Antwort

7

Ok, habe es herausgefunden.

Copy Local galt nicht für das Testprojekt, das ich verwendete, und folglich wurden die Bibliotheken nicht in den Ordner bin des Testprojekts kopiert. Alle Bibliotheken wurden als Referenzen zum Testprojekt hinzugefügt und die lokale Kopie wurde festgelegt, um dies zu erreichen.

+0

BTW, ich musste das Projekt nicht auf x86 ausrichten. Ich war in der Lage, den Code zu bekommen, um auf "Any CPU" – Sameera

+1

Ich lief das gleiche Problem. "Copy Local" war für Tests, die mit TFS ausgeführt wurden, nicht funktionsfähig. Ich musste alle Korrekt-Bibliotheken mit [Testeinstellungen] hinzufügen (http://msdn.microsoft.com/en-us/library/ee256991.aspx). – mathieu

Verwandte Themen