Свободное владение NHibernate не сохраняется для данного класса - PullRequest
0 голосов
/ 12 июля 2011

Я погуглил свою задницу и, похоже, не могу найти решение своей проблемы.Я пытаюсь получить демонстрационный проект здесь: http://wiki.fluentnhibernate.org/Getting_started для работы с sql-сервером 2008.

Я не могу создать сессионный завод правильно.

Код:

    private static ISessionFactory CreateSessionFactory()
    {
        try
        {   
            return Fluently.Configure()
                           .Database(MsSqlConfiguration.MsSql2008
                                .ConnectionString(c => c
                                    .Server("localhost")
                                    .Database("gisli")
                                    .TrustedConnection()).ShowSql())
                            .Mappings(m => { 
                                m.HbmMappings.AddFromAssemblyOf<Employee>(); 
                                m.HbmMappings.AddFromAssemblyOf<Store>();
                                m.HbmMappings.AddFromAssemblyOf<Product>();

                            })
                   .BuildSessionFactory();


        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            if(e.InnerException !=null)
                Console.WriteLine(e.InnerException.Message);
                return null;
        }
    }

Я также пытался использовать автоотображение и не смог заставить его работать.

Все мои классы сущностей являются открытыми.

Пример класса сущности и класса отображения:

public class Product
{
    public virtual int Id { get; private set; }
    public virtual string Name { get; set; }
    public virtual double Price { get; set; }
    public virtual IList<Store> StoresStockedIn { get; set; }

    public Product()
    {
        StoresStockedIn = new List<Store>();
    }
}

public class ProductMap : ClassMap<Product>
{
    public ProductMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.Price);
        HasManyToMany(x => x.StoresStockedIn)
            .Cascade.All()
            .Inverse()
            .Table("StoreProduct");
    }
}

РЕДАКТИРОВАТЬ:

Я также пробовал это:

    private static ISessionFactory CreateSessionFactory()
    {
        return Fluently.Configure()
          .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c =>             c.Server(".").Database("gisli").TrustedConnection()))
          .Mappings(m =>
            m.FluentMappings.AddFromAssemblyOf<Program>())
          .BuildSessionFactory();
    }

РЕДАКТИРОВАТЬ: Второй примерэто на самом деле решение.Я случайно назвал проект FluentNHibernate в начале, и когда я переименовал проект, он как-то перепутал.Кто-нибудь может увидеть, где я все испортил?

искренне Gísli

1 Ответ

2 голосов
/ 12 июля 2011

Ваш первый пример на самом деле не включает беглых отображений, только отображения HBM.

Ваш второй пример должен работать, если ваши сопоставления находятся в той же сборке, что и Program.

...