单元测试正在清理数据库,但是Windows Form App在FluentNHibernate上可以正常工作

问题描述

我有一个使用FluentNHibernate的包装DLL。我正在使用Windows应用程序中的DLL。我可以从数据库中加载内容,并且一切都可以按照我的期望进行。

我认为我可以使用包装DLL进行一些单元测试。我在单元测试中使用了相同的包装DLL。但是,当它尝试打开会话时,将清除数据库的内容(但不会引发异常,当我尝试将Query与会话一起使用时会引发异常)。看起来有些东西没有正确初始化,但是找不到。有帮助或指示吗?

//包装DLL中的方法

        public void LoadData(int id)
        {
            using (var session = NHibernateHelper.OpenSession())
            {
                using (var tx = session.BeginTransaction())
                {
                    try
                    {
                        var customer = session.Query<MyDataBaseObject>()
                           .Where(c => c.Id == id).First();
                        tx.Commit();
                    }
                    catch (Exception ex)
                    {
                    }
...

以及单元测试中的代码

[TestClass]
public class UnitTest1
{

    Class1 class1 = new Class1();

    [TestMethod]
    public void TestMethod1()
    {
        class1.LoadData(1);
    }
}

编辑:2020年10月18日

看起来问题出在InitializeSessionFactory中。因此,应以这种方式进行映射,以使其不会每次都创建所有对象。例如,我添加了一个对象,稍后再返回,我应该能够添加一个新的对象(而不删除现有数据)。它一直在为数据库创建新对象。如果我立即读取数据,则工作正常,因为我已有会话。 有人可以指出如何修改以下代码来实现这一目标吗?

公共类NHibernateHelper { 私有静态ISessionFactory _sessionFactory;

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

private static void InitializeSessionFactory()
{
    _sessionFactory = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql7.ConnectionString(@"Server=(local);initial catalog=MyDatabase; user=my_user_id;password=my_password;").ShowSql())
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Store>())
        .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true,true))
        .BuildSessionFactory();
}

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

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...