流畅的NHibernate没有实体类的持久性

时间:2011-07-12 11:37:00

标签: c# sql-server nhibernate sql-server-2008 fluent-nhibernate

我用Google搜索了我的屁股,似乎无法找到解决问题的方法。 我试图在这里获得演示项目:http://wiki.fluentnhibernate.org/Getting_started 使用sql-server 2008。

我似乎无法正确创建sessionFactory。

代码:

    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,当我重新命名该项目时,它有些混淆了。 任何人都可以看到我搞砸了吗?

真诚 吉斯利

1 个答案:

答案 0 :(得分:2)

您的第一个示例实际上并不包含任何流畅的映射,只包含HBM映射。

只要您的映射与Program位于同一个程序集中,您的第二个示例就可以正常工作。