我正在尝试实现一个简单的控制台程序,它创建一些数据并将其存储到数据库中。问题是程序只有在我通过代码插入记录时才有效。如果我尝试从使用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
}
}
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 :(得分:0)
不,当您查询记录时,NHibernate不会删除您的记录。我至少可以想到三种可能的解释:
您没有显示完整代码,因此要么在别处删除行,要么截断表,或者删除并重新创建表。
或者,您在创建行时使用事务,并且在关闭事务之前未能提交事务。
另一种可能是由于配置或映射错误,程序只是从不同的表或不同的数据库中读取。