2010-11-29 11 views
6

Estoy probando mi primer proyecto con Fluent NHibernate (cualquier sabor NHibernate para el caso). He sido incapaz de conseguir más allá del punto de crear un objeto Session fábrica como estoy corriendo en la siguiente excepción:Fluidez NHibernate falla al crear una fábrica de sesiones con SQLCE

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: 

estoy usando los últimos binarios FluentNHibernate. VS 2010, en Windows 7 x64. Establecí el ensamblado System.Data.SqlServerCe en "Copiar local" y cambié la plataforma de destino del proyecto a x86.

La configuración fluidez es:

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; 

Nota: engine.CreateDatabase() funciona bien.

¿Alguna ayuda/ideas, por favor?

Respuesta

7

Ok, lo descubrí.

La copia local no se aplicaba al proyecto de prueba que estaba utilizando y, en consecuencia, las librerías no se copiaron en la carpeta bin del proyecto de prueba. Se agregaron todas las bibliotecas como referencias al proyecto de prueba y se configuró copia local en ellas para que esto funcione.

+0

Por cierto, no necesité dirigir el proyecto a x86. Pude obtener el código para ejecutar correctamente dirigido a "Cualquier CPU" – Sameera

+1

Repasé el mismo problema. "Copiar local" no funcionaba para las pruebas que se ejecutan en TFS. Tuve que agregar todas las libs de corrección utilizando [configuración de prueba] (http://msdn.microsoft.com/en-us/library/ee256991.aspx). – mathieu

Cuestiones relacionadas