代码之家  ›  专栏  ›  技术社区  ›  Joe Phillips

NHibernate查询未返回任何结果

  •  1
  • Joe Phillips  · 技术社区  · 14 年前

    我在试着用英语流利地表达ASP.NETMVC公司。据我所知,它配置正确,但当我访问使用此设置的页面时,我没有收到任何数据结果。

    我使用的模型叫做 Brand Brands .

    以下是我的BrandController的一个片段:

    public ActionResult Index()
    {
        IRepository<Brand> repo = new BrandRepository();
        var brands = repo.GetAll().ToList<Brand>();
    
         return View(brands);
    }
    

    以下是我的BrandRepository中的一个片段:

    ICollection<Brand> IRepository<Brand>.GetAll()
    {
        using (ISession session = NHibernateHelper.OpenSession())
        {
            var brands = session
                .CreateCriteria(typeof(Brand))
                .List<Brand>();
    
            return brands;
        }
    }
    

    这是我的NHibernateHelper:

    public class NHibernateHelper
    {
        private static ISessionFactory _sessionFactory;
    
        private static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    _sessionFactory = Fluently.Configure()
                        .Database(
                            MsSqlConfiguration.MsSql2008
                                .ConnectionString(c => c
                                    .FromConnectionStringWithKey("ShoesFullAccess")
                                )
                        )
                        .BuildSessionFactory();
                }
    
                return _sessionFactory;
            }
        }
    
        public static ISession OpenSession()
        {
            return SessionFactory.OpenSession();
        }
    }
    

    public class Brand
    {
        public int Id { get; private set; }
        public virtual string Name { get; set; }
        public virtual IList<Style> Styles { get; private set; }
    
        public Brand()
        {
            Styles = new List<Style>();
        }
    
        public virtual void AddStyle(Style style)
        {
            Styles.Add(style);
        }
    }
    

    最后,这是我的品牌地图:

    public class BrandMap : ClassMap<Brand>
    {
        public BrandMap()
        {
            Id(x => x.Id);
            Map(x => x.Name);
            HasMany(x => x.Styles)
                .Inverse()
                .Cascade.All();
        }
    }
    

    2 回复  |  直到 14 年前
        1
  •  5
  •   Diego Mijelshon    14 年前

    您没有将映射添加到配置中。

    在前面添加此项 .BuildSessionFactory()

    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<BrandMap>())
    
        2
  •  1
  •   Joe Phillips    4 年前

    您没有将映射添加到配置中。

    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<BrandMap>())

    Brand Id 领域 virtual .

    最后,我需要改变我的想法 BrandMap 只是一点点——我必须通过添加以下代码来指定它所指向的表 Table("Brands");