Fluent Nhibernate:不读取已通过SqlServer Management Studio插入的数据库中的记录

时间:2016-12-16 09:43:38

标签: nhibernate fluent-nhibernate fluent

我正在尝试实现一个简单的控制台程序,它创建一些数据并将其存储到数据库中。问题是程序只有在我通过代码插入记录时才有效。如果我尝试从使用SqlServer Management Studio创建的表中读取某些记录,它将无法正常工作并读取0条记录。此外,似乎尝试读取此值会以某种方式删除表中的数据。如果我在执行后检查SqlServer,则先前插入的记录将消失。这是我执行阅读时的部分:

using(var session = NHibernateHelper.OpenSession())
{
    using(var transaction = session.BeginTransaction())
    {
        var DepartmentObject = InsertDepartment("IT", "962788700227");
        var firstEmployee = InsertEmployee("Jacopo", "disoccupated", DepartmentObject);
        var secondEmployee = InsertEmployee("Andrea", "programmatore", DepartmentObject);
        var thirdEmployee = InsertEmployee("Davide", "fashion-blogger", DepartmentObject);
        session.Save(DepartmentObject);
        session.Save(firstEmployee);
        session.Save(secondEmployee);
        session.Save(thirdEmployee);
        transaction.Commit();
        var elencoEmployee = session.Query<Employee>().ToList(); // this reading is working because I create the table and insert values via code
        var elencoTabTest = session.Query<TabTest>().ToList(); // this reading return a list of 0 elements but on the db there is a table named TabTest with 2 records
    }
}

InsertEmployeeInsertDepartment函数仅创建一个设置其属性的Employee/Department对象。

这是应该映射我想要阅读的表的类TabTest

class TabTest
{
    public virtual int Id { get; set; }
    public virtual string Descrizione { get; set; }
}

class TabTestMap : ClassMap<TabTest>
{
    public TabTestMap()
    {
        Id(x => x.Id);
        Map(x => x.Descrizione);
        Table("TabTest");
    }
}

如果有人有想法请分享。

1 个答案:

答案 0 :(得分:0)

不,当您查询记录时,NHibernate不会删除您的记录。我至少可以想到三种可能的解释:

您没有显示完整代码,因此要么在别处删除行,要么截断表,或者删除并重新创建表。

或者,您在创建行时使用事务,并且在关闭事务之前未能提交事务。

另一种可能是由于配置或映射错误,程序只是从不同的表或不同的数据库中读取。