2016-12-16 3 views
0

いくつかのデータを作成してdbに格納する簡単なコンソールプログラムを実現しようとしています。問題は、コードを介してレコードを挿入する場合にのみプログラムが機能することです。 SqlServer Management Studioを使用して作成したテーブルからレコードを読み込もうとすると、レコードは0レコードしか読み込めません。さらに、この値を読み取ろうとすると、テーブルのデータが何とか削除されるようです。実行後にSqlServerをチェックすると、以前に挿入されたレコードはなくなります。この私が読書を行う部分:Fluent Nhibernate:SqlServer Management Studio経由で挿入されたデータベースからレコードを読み取っていません

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"); 
    } 
} 

誰かがいくつかのアイデアを共有してくださいを持っている場合。

答えて

0

いいえ、NHibernateはあなただけのためにあなたのレコードを削除していません。

あなたは完全なコードを表示していないので、行を削除したり、テーブルを切り捨てたり、テーブルを削除したり再作成したりするコードがあります。

また、行を作成するときにトランザクションを使用していて、トランザクションを閉じる前にトランザクションをコミットしていない場合もあります。

もう1つの可能性は、構成やマッピングのミスによってプログラムが別のテーブルまたは別のデータベースから読み込むことです。

+0

このテーブルの2番目の点に関して、テーブルをマップするクラスにあるコードを使ってコードを編集しました。私はSession.Queryを使用した読み取りだけをコードで行いません。。 – jacopinho04

+1

それにもかかわらず、 "選択は壊れていません"(https://blog.codinghorror.com/the-first-rule-of-programming-its-always-your-fault/)。あなたが追加したコードは何も証明していません(これらの部分はまだ完全な実行可能プログラムではありませんので、もっとコードがあります)。あなたはあなたがしているすべてのものを見直す必要があります。まったく同じデータベースの同じテーブルから実際に読み込もうとしていますか?あなたは本当にあなたがプログラムやスクリプトをテストするのか、それとも毎回データベースを再初期化しないのですか? NHibernate.SQLのログを有効にするか、SQLプロファイラを使用して完全な画像を取得します。 –

関連する問題