2

nHibernate を使用して作業している小さな POC アプリケーションがあります。自分で nHibernate をセットアップするのはこれが初めてですが、以前にも使用したことがあります。何らかの理由で、クエリからデータが返されません。データベースにあることを確認できProductます。

public class NHibernateHelper
{
    private static String _connectionString =
        @"Server=localhost\SQLEXPRESS;Database=TestProject;User ID=TestProjectMvc;Password=Pa$$word";

    private static ISessionFactory _sessionFactory;

    private static ISessionFactory SessionFactory
    {
        get
        {
            if (_sessionFactory == null)
                InitializeSessionFactory();

            return _sessionFactory;
        }
    }

    private static void InitializeSessionFactory()
    {
        _sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008.ConnectionString(_connectionString).ShowSql()
            ).Mappings(m => m.FluentMappings.AddFromAssemblyOf<Product>())
            //.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
            .BuildSessionFactory();
    }

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

私のマッピングクラス:

 public class ProductMap : ClassMap<Product>
 {
    public ProductMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        References(x => x.Category).Column("CategoryId");
    }
 }

そして、私がデータを取得するために使用している方法:

    public IEnumerable<Product> GetAllProducts()
    {
        using (var session = NHibernateHelper.OpenSession())
        {
            var list = session.QueryOver<Product>().List();
            return list;
        }
    }
4

2 に答える 2

0

また、SchemaExport を使用してデータベース テーブルを生成する場合は、/do/ アプリケーションを 2 回目に実行するときにオフにすることを忘れないでください。それ以外の場合は、空白のテーブルが再び表示されます...

于 2015-09-24T20:01:13.990 に答える