and here is the inner exception at the end :
Could not load file or assembly 'ByteCode.Castle' or one of its dependencies. The system cannot find the file specified.
I am adding all references for nhibernate , used all the builds here is my code :
using NHibernate;
using FluentNHibernate;
using NHibernate.Cfg;
using System.Reflection;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Cfg;
using NHibernate.ByteCode.Castle;
using Castle.Core;
using Castle.DynamicProxy;
namespace _3adaseh
{
public static class NHibernateHelper
{
private static void ReferByteCode()
{
//Just to make sure the ByteCodeCastle is loaded
ProxyFactory fake = new ProxyFactory();
}
#region Session
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
ReferByteCode();
var configuration = new Configuration();
#region Configuring Fluent NHibernate
IPersistenceConfigurer persistenceConfigurer = MsSqlConfiguration.MsSql2008.ConnectionString("Data Source=.;Initial Catalog=3adaseh;Integrated Security=True").ShowSql().ProxyFactoryFactory("ByteCode.Castle.ProxyFactoryFactory, ByteCode.Castle");
//
// initialize nhibernate with persistance configurer properties
//Configuration cfg = persistenceConfigurer.ConfigureProperties(new Configuration());
//var persistenceModel = new PersistenceModel();
//persistenceModel.AddMappingsFromAssembly(Assembly.Load("3adaseh.Mappings"));
//persistenceModel.Configure(cfg);
try
{
_sessionFactory = Fluently.Configure().Database(persistenceConfigurer).Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("3adaseh.Mappings"))).BuildSessionFactory();
}
catch (System.Exception ex)
{
throw ex;
}
//cfg.SetProperty(
// add mappings definition to nhibernate configuration
//try
//{
// var persistenceModel = new PersistenceModel();
// persistenceModel.AddMappingsFromAssembly(Assembly.Load("3adaseh.Mappings"));
// persistenceModel.Configure(cfg);
// _sessionFactory = configuration.BuildSessionFactory();
//}
//catch (System.Exception ex)
//{
// throw ex;
//}
#endregion
}
return _sessionFactory;
}
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
#endregion
#region CRUD Operations
public static void Add<T>(T newObject)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(newObject);
transaction.Commit();
}
}
}
public static void Update<T>(T updatedObject)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Update(updatedObject);
transaction.Commit();
}
}
}
public static void Remove<T>(T deletedObject)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Delete(deletedObject);
transaction.Commit();
}
}
}
public static T GetById<T>(int objectID)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
return session.Get<T>(objectID);
}
}
}
#endregion
}
}
I couldnt test anything so far , I am really getting bored of this error , I added nhibernate references to all my class libraries and nothing is being fixed , can anyone help please??
Best Answer
Make sure that you have assembly references to NHibernate.ByteCode.Castle.dll and Castle.Core.dll (and Castle.DynamicProxy2.dll if you're using NH2.1.2)* to ensure that it is copied into the output directory. Which version of Fluent NHibernate and NHibernate are you using?
* Castle.DynamicProxy2.dll was merged with Castle.Core.dll. The newer merged version of Castle.Core.dll is used in NH3.