vishal
vishal

Reputation: 233

fluentnhibernate configuration Error

I have created one console application by watching videos from http://www.d80.co.uk/post/2011/10/06/NHibernate-Video-Tutorial.aspx website. when i tried to executing the code its giving me following error:

An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.

but when i have downloaded the code and executed, its working fine. i have checked both the code and are same. so not under stand what i am doing wrong. i am posting my code here please help me to get out of this situation.

NhibernateHelper.cs

using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
using System;

namespace FluentNHibernate
{    
    class NhibernateHelper
    {
        private static ISessionFactory _sessionFactory;

        private static ISessionFactory sessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    initialisationFactory();
                }

                return _sessionFactory;
            }

        }
        private static void initialisationFactory()
        {
            try
            {
                _sessionFactory = Fluently.Configure()
                                    .Database(MsSqlConfiguration.MsSql2005.ConnectionString(@"Server=10.10.10.7;Database=TestDatabase;uid=sa;pwd=9ijnhy6;Trusted_Connection=false;").ShowSql())
                                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Car>())
                                    .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
                                    .BuildSessionFactory();
            }
            catch (Exception e)
            {

                throw;
            }

        }
        public static ISession OpenSession()
        {
            return sessionFactory.OpenSession();
        }

    }
}

Program.cs

using System;
using FluentNHibernate.Mapping;
namespace FluentNHibernate
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            using (var session = NhibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var fordMake = new Make
                    {
                        Name = "Ford"
                    };
                    var fiestaModel = new Model
                    {
                        Name = "Fiesta",
                        Make = fordMake
                    };

                    var car = new Car
                    {
                        Make = fordMake,
                        Model = fiestaModel,
                        Title = "Dans Car"
                    };

                    session.Save(car);

                    transaction.Commit();

                    Console.WriteLine("Created Car " + car.Title);
                }
            }
            Console.ReadLine();
        }
    }
    public class MakeMap : ClassMap<Make>
    {
        public MakeMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);
        }
    }
    public class ModelMap : ClassMap<Model>
    {
        public ModelMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);
            References(x => x.Make).Cascade.All();
        }
    }
    public class CarMap : ClassMap<Car>
    {
        public CarMap()
        {
            Id(x => x.Id).GeneratedBy.HiLo("Car");
            Map(x => x.Title);
            References(x => x.Make).Cascade.All();
            References(x => x.Model).Cascade.All();
        }
    }
    public class Make
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
    }
    public class Model
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual Make Make { get; set; }
    }
    public class Car
    {
        public virtual int Id { get; set; }
        public virtual string Title { get; set; }
        public virtual Make Make { get; set; }
        public virtual Model Model { get; set; }
    }
}

Upvotes: 0

Views: 650

Answers (1)

Michael D. Kirkpatrick
Michael D. Kirkpatrick

Reputation: 488

Your NHibernateHelper.cs is considerably different than mine.

Try changing

_sessionFactory = Fluently.Configure()
                                          .Database(MsSqlConfiguration.MsSql2005.ConnectionString(@"Server=10.10.10.7;Database=TestDatabase;uid=sa;pwd=9ijnhy6;Trusted_Connection=false;").ShowSql())
                                          .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Car>())
                                          .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
                                          .BuildSessionFactory();

To:

_sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2005.ConnectionString(c => c.FromConnectionStringWithKey("ConnectionString")))
            .Mappings(cfg =>
            {
                cfg.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly());
                cfg.FluentMappings.Conventions.Add(AutoImport.Never());
            })
            .ExposeConfiguration(x =>
            {
                x.SetProperty("current_session_context_class", mode);
            })
            .BuildSessionFactory();

In Your web.config or app.config add the following within tags:

<connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=10.10.10.7; Initial Catalog=TestDatabase; User Id=sa; Password=9ijnhy6;"/>
</connectionStrings

Hopefully this helps.

Upvotes: 1

Related Questions