首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fluent NHibernate没有实体类的持久化

Fluent NHibernate没有实体类的持久化
EN

Stack Overflow用户
提问于 2011-07-12 19:37:00
回答 1查看 5.7K关注 0票数 0

我在谷歌上搜了半天,似乎找不到解决问题的办法。我尝试在这里获得演示项目:使用http://wiki.fluentnhibernate.org/Getting_started来使用sql-server2008。

我似乎无法正确创建sessionFactory。

代码:

代码语言:javascript
复制
    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;
        }
    }

我也尝试过使用自动映射,但还没能让它工作。

我的所有实体类都是公共的。

实体类和映射类示例:

代码语言:javascript
复制
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");
    }
}

编辑:

我还尝试了这个:

代码语言:javascript
复制
    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,当我重命名该项目时,它被搞混了。有没有人看到我把事情搞砸了?

真诚的吉斯利

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-12 20:44:43

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6663574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档