0

我有这个填充数据库的代码,但是完成后,数据库仍然是空的。只有 hibernate_unique_key 表中的数字更高。

接下来有趣的是,在调试过程中,实例有 id,保存后,但不像 1,2,3 ......但非常高,如 60083、60084 ......等。(这似乎不正常,因为有只有几行用于保存)。

在此之前,引用等有一些问题,但现在没有错误消息或异常。

代码在那里:

using System;
using NHibernate.Cfg;
using SharpArch.Data.NHibernate;
using LaboratorniMetody.Data.NHibernateMaps;
using SharpArch.Core.PersistenceSupport;
using LaboratorniMetody.Core;

namespace LaboratorniMetody.FillSchema
{
    class Program
    {
        private static Configuration configuration;

        static void Main(string[] args)
        {
            configuration = NHibernateSession.Init(new SimpleSessionStorage(), new String[] { "LaboratorniMetody.Data" },
                                            new AutoPersistenceModelGenerator().Generate(),
                                            "../../../../app/LaboratorniMetody.Web/NHibernate.config");

            IRepository<Laboratory> LaboratoryRepository = new Repository<Laboratory>();
            Laboratory Laboratory1 = new Laboratory() { Name = "Hematologie" };//Method
            Laboratory l = LaboratoryRepository.SaveOrUpdate(Laboratory1);
            Laboratory Laboratory2 = new Laboratory() { Name = "Patologie" };//Method
            LaboratoryRepository.SaveOrUpdate(Laboratory2);
            Laboratory Laboratory3 = new Laboratory() { Name = "Laboratoře" };//Method
            LaboratoryRepository.SaveOrUpdate(Laboratory3);
        }
    }
}

我使用 NUnit 从 Project.Core 类中生成的 DB 模式。

你有什么想法我应该在哪里找到问题吗?我有 2 个非常相似的项目,可以正常工作。我从其中一个复制了这段代码,实际上没有什么不同(除了数据库模型等等。)

4

1 回答 1

1

您需要在事务中进行更改并在之后提交事务。

using(var tx = NHibernateSession.Current.BeginTransaction())
{
   IRepository<Laboratory> LaboratoryRepository = new Repository<Laboratory>();
   Laboratory Laboratory1 = new Laboratory() { Name = "Hematologie" };//Method
   Laboratory l = LaboratoryRepository.SaveOrUpdate(Laboratory1);
   Laboratory Laboratory2 = new Laboratory() { Name = "Patologie" };//Method
   LaboratoryRepository.SaveOrUpdate(Laboratory2);
   Laboratory Laboratory3 = new Laboratory() { Name = "Laboratoře" };//Method
   LaboratoryRepository.SaveOrUpdate(Laboratory3);

   tx.Commit();
}

我建议查看 SharpArchContrib 项目 wiki,其中有一些关于在 Windows 应用程序/服务中使用 SharpArch 以及如何从那里使用 Transaction 属性的示例。

https://github.com/sharparchitecture/Sharp-Architecture-Contrib/wiki/

于 2012-04-17T11:28:22.650 回答