2016-12-16 19 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獲取完整的圖片。 –

相關問題