2016-12-16 62 views
0

我想实现一个简单的控制台程序,创建一些数据并将其存储到数据库。问题是,只有通过代码插入记录,程序才能正常工作。如果我尝试从使用SqlServer Management Studio创建的表中读取一些记录,则它不工作并读取0条记录。此外,似乎尝试读取此值会以某种方式删除表中的数据。如果在执行后检查SqlServer,则以前插入的记录消失。此,当我执行读取的部分:流利Nhibernate:不从数据库中读取记录通过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 
    } 
} 

InsertEmployee的和InsertDepartment功能仅创建一个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"); 
    } 
} 

如果有人有一些想法,请分享。

回答

0

不,NHibernate不会删除你的记录,当你只是为他们查询。我可以想到至少三种可能的解释:

您没有显示完整的代码,因此无论是否有其他代码删除行或截断表或删除并重新创建表。

或者,您在创建行时无法在提交事务之前使用事务,然后关闭它。

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

+0

我使用映射表的类中存在的代码编辑了代码,关于此表中的第二点,我只通过Session.Query 进行的读取没有做任何事情。 – jacopinho04

+1

尽管如此,“选择没有中断”(https://blog.codinghorror.com/the-first-rule-of-programming-its-always-your-fault/)。你添加的这段代码并不能证明任何东西(这些代码仍然不是一个完整的可运行程序,所以显然你有更多的代码)。你需要检查你所做的一切 - 你是否真的试图在同一个数据库中读取同一张表?你真的确定你编程或测试脚本,或者是否每次运行都不重新初始化数据库吗?打开NHibernate.SQL的日志记录或使用SQL Profiler获取完整的图片。 –

相关问题