Odd Exception when Combining .hbm.xml and Fluent NHibernate - Any ideas? - nhibernate

So I'm converting my mapping files on an as needed basis (when making
changes, convert to mapping). Any when configuring NHibernate like so:
Assembly asm = Assembly.Load("RPMWare.Core.DataAccess");
//NHibernate configuration: see hibernate.cfg.xml
var cfg = new Configuration();
cfg.AddMappingsFromAssembly(asm);
cfg.Configure();
And running my web-application I get the following exception:
Could not load file or assembly 'NHibernate, Version=2.0.0.4000,
Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its
dependencies. The located assembly's manifest definition does not
match the assembly reference. (Exception from HRESULT: 0x80131040)
However, all my integration tests are working as expected. Any ideas?

Nevermind. If you're using the latest version of Fluent NHibernate and the lastest version of NHibernate you need to add YOUR VERSION of NHibernate to the Fluent NHibernate project before building.

Related

Using NServiceBus + StructureMap + MVC5

I'm getting some really weird errors, see the repro here - https://github.com/tonyeung/nservicebus-structuremap-mvc5
A strongly-named assembly is required.
Could not load file or assembly 'NServiceBus, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9fc386479f8a226c' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
Unable to find the exported Type's in assembly NServiceBus.Core, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9fc386479f8a226c. One or more of the assembly's dependencies may be missing. Could not load file or assembly 'Raven.Abstractions, Version=2.0.3.0, Culture=neutral, PublicKeyToken=37f41c7f99471593' or one of its dependencies. The system cannot find the file specified.
for error number 1 - I had the configuration all set to go, but then it says strong name is needed.
for error number 2 - I commented out the configuration (whats i the repro right now), and I get the manifest error.
for error number 3 - not in repro since its my live project - I have structuremap inject an object that handles my message sending - wanted to create a repro for this, but since i can't even get a simple project going, I'm asking for help now.
The reason you having issues is because your MVC project outputs an assembly named "nservicebus.dll" which clashes the NServiceBus.dll assembly.
Rename the assembly of your MVC5 project to something that doesn't clash and then uncomment the code in the global.cs file.

Using Fluent NHibernate SQL Server CE cannot create the driver

Could not create the driver from NHibernate.Driver.SqlServerCeDriver,
NHibernate, Version=3.3.0.4000, Culture=neutral,
PublicKeyToken=aa95f207798dfdb4.
inner exeption:
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 element in the application configuration file to specify the full name of the assembly.
This is the error I get when I try to use fluent nHibernate!
I try the simple examples by the configuration doesn't work well with local database
using this dlls.
My code:
private static String ConnectionString = "Data Source = Database1.sdf";
public static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlCeConfiguration.Standard
.ConnectionString(ConnectionString)
.Driver<NHibernate.Driver.SqlServerCeDriver>()
.Dialect<NHibernate.Dialect.MsSqlCeDialect>())
.Mappings(m => m.FluentMappings.AddFromAssembly(System.Reflection.Assembly.GetExecutingAssembly()))
.ExposeConfiguration(BuildSchema)
.ExposeConfiguration(x => x.SetProperty("connection.release_mode", "on_close"))
.BuildSessionFactory();
}
private static void BuildSchema(Configuration configuration)
{
SchemaExport schemaExport = new SchemaExport(configuration);
schemaExport.Execute(false, true, false);
}
Thank you! It's very important!
i found that it break in the buildsessionfactory...helpppp!!!!
If you're coming at this from .net core, and you're getting the error 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 element
in the application configuration file to specify the full name of the
assembly.
Assuming you've installed NHibernate via NuGet, then you need to ensure the appropriate Sql package is installed. There are a couple of unofficial System.Data.SqlServerCe out there. In my case I needed System.Data.SqlClient
Are you sure you do have Version=3.3.0.4000 of NHibernate in your bin directory? It looks like you have a different build of NHibernate in your bin directory.
If you sure it is there, check if your references are correct:
Do you have a reference in your project to:
"System.Data.SqlServerCe"
This is located in the following dir:
"C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Desktop\System.Data.SqlServerCe.dll"
Make sure you have:
"Copy Local" to true.

Fluent NuGet messed up

I have a solution with several projects. I changed a couple of references for Fluent nHibernate to NuGet packages (v1.3.0.717). Recently I changed another project and added the current Fluent package, 1.2.0.712 (earlier but current) and my app will build but not run. The current version points to nHibernate v3.1.0.4 but somewhere it clashes with v3.2.9.4000 which the previous version of Fluent referenced.
Inner Exception
{"Could not load file or assembly 'NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)":"
NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4"}
Exception
Could not load file or assembly 'NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
What do I do to clean this project up and get it running again?
Just remove all NHibernate/Fluent Nhibernate related packages and run command
Install-Package FluentNHibernate -Version 1.3.0.717
It will install correct package for you.
For some reason this package is not marked as current version. That is why Nuget gives you old one.

Error loading one of the NHibernate dependent dll's

I am building an application using NHibernate. Because I could not add the DLL's of my current version of NHibernate (I cannot add reference when framework 4.0 is target).
I tried to get the latest and greatest of the w.w.w., this is what I have now:
NHibernate.dll (3.2.0.4000)
NHibernate.ByteCode.Castle (3.0.0.4000)
FluentNHibernate.dll (1.2.0.694)
Castle.Core (2.5.2.0)
Castle.Services.Logging.NLogIntegration (2.5.2.0)
Antlr.Runtim (3.1.3.42154)
Iesi.Collections (3.2.0.400)
These I can reference and build my solution with. I know there are some issues with the copying/loading of the dll.s so I made them deployment items.
But run-time I (still) get the following:
NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException: Unable to load type 'NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle' during configuration of proxy factory class.
Possible causes are:
- The NHibernate.Bytecode provider assembly was not deployed.
- The typeName used to initialize the 'proxyfactory.factory_class' property of the session-factory section is not well formed.
Solution:
Confirm that your deployment folder contains one of the following assemblies:
NHibernate.ByteCode.LinFu.dll
NHibernate.ByteCode.Castle.dll ---> System.TypeLoadException: Method 'IsProxy' in type 'NHibernate.ByteCode.Castle.ProxyFactoryFactory' from assembly 'NHibernate.ByteCode.Castle, Version=3.0.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' does not have an implementation.
Thoughts anyone?
In response to Vijay Gill’s answer I have decided to take a different tack.
NUGet packages, a one-stop shop, and easy updates!
There is a FluentNHibernate package out there. I have installed it but I guess there is something amiss here too:
Test method CoreDatabaseTests.CreateCoreDatabase threw exception:
System.IO.FileLoadException: Could not load file or assembly 'NHibernate, Version=3.2.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ---> System.IO.FileLoadException: Could not load file or assembly 'NHibernate, Version=3.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
With NHibernate 3.2 you don't need NHibernate.ByteCode.Castle anymore, which considerably simplifies your dependency tree.
Getting components from various locations in such cases is nto a good idea, you compile everything from scratch. Well that's my experience so far. Fluent NH has not been updated to NH 3.2GA.
I would suggest you to download fluent NH and stick with the version that comes with it OR if you want to be on the bleeding edge, download the sources of fluent NH and compile with references set to latest NH (3.2GA).

Fluent NHibernate and NHibernate version issue

Could not load file or assembly 'NHibernate, Version=3.2.0.2002, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The system cannot find the file specified.
This could be caused by a number of things, but the most probable cause is that your start up project does not reference the assembly 'NHibernate, Version=3.2.0.2002, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' although other assemblies you have referenced use the assembly.
Add the assembly to the start up project and you shall be fine.
And please try to ask questions in a better manner.
It seems FHN has not a build for NH 3.2 yet, because it's in RC state right now.
So you can use asm binding redirect for now.