2016-12-16 15 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 
    } 
} 

В 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 для получения полного изображения. –

 Смежные вопросы

  • Нет связанных вопросов^_^