Вопрос: я продолжаю получать эту ошибку nhibernate, когда я пытаюсь вставить экземпляр clsSettings в базу данных:
Произошло исключение при получении nhDBapi.DB.Tables.clsSettings.UID
См. Класс ниже, все методы ниже класса не работают, из-за этого исключения.
Самое смешное, это работает, когда все находится в исполняемом файле с именем nhDBapi.exe, и даже когда он находится в dll, схема таблицы создается правильно.
Когда я перемещаю точноетот же код в API_nHibernate.dll загружается MailServer.exe, затем он перестает работать ...
Единственное различие между этими двумя в exe, я использую:
[NHibernate.Mapping.Attributes.Class(Name = "nhDBapi.DB.Tables.clsSettings, nhDBapi", Table = "T_lsSettings")]
в то время как вdll я использую:
[NHibernate.Mapping.Attributes.Class(Name = "nhDBapi.DB.Tables.clsSettings, API_nHibernate", Table = "T_lsSettings")]
, который должен быть правильным.
Здесь класс:
using System;
using System.Collections.Generic;
using System.Text;
namespace nhDBapi.DB.Tables
{
[NHibernate.Mapping.Attributes.Class(Name = "nhDBapi.DB.Tables.clsSettings, API_nHibernate", Table = "T_lsSettings")]
public class clsSettings
{
[NHibernate.Mapping.Attributes.Id(Name = "UID", Column = "S_UID", TypeType = typeof(System.Guid))]
public virtual System.Guid UID
{
get { return m_UID; }
set { m_UID = value; }
} // UserID
protected System.Guid m_UID;
[NHibernate.Mapping.Attributes.Property(Name = "Settings", Column = "S_Settings", TypeType = typeof(System.Byte[]))]
public virtual System.Byte[] Settings
{
get { return m_Settings; }
set { m_Settings = value; }
} // UserID
protected System.Byte[] m_Settings;
} // End partial class lsSettings
} // End Namespace nhDBapi.DB.Tables
И здесь все методы вставки, которые я пробовал:
// nhDBapi.DBaccess.Insert<nhDBapi.DB.Tables.clsDomains>(x);
public static void InsertRef<T>(ref T RowToAdd)
{
/*
List<T> lsRows = new List<T>();
lsRows.Add(RowToAdd);
Insert<T>(lsRows);
lsRows.Clear();
lsRows = null;
*/
NHibernate.ISession session = m_bsfSessionFactory.OpenSession();
NHibernate.ITransaction transaction = session.BeginTransaction();
session.SaveOrUpdate(RowToAdd);
transaction.Commit();
session.Close();
transaction.Dispose();
session.Dispose();
} // End Sub Insert
// nhDBapi.DBaccess.Insert<nhDBapi.DB.Tables.clsDomains>(x);
public static void Insert<T>( T RowToAdd)
{
/*
List<T> lsRows = new List<T>();
lsRows.Add(RowToAdd);
Insert<T>(lsRows);
lsRows.Clear();
lsRows = null;
*/
NHibernate.ISession session = m_bsfSessionFactory.OpenSession();
NHibernate.ITransaction transaction = session.BeginTransaction();
session.SaveOrUpdate(RowToAdd);
transaction.Commit();
session.Close();
transaction.Dispose();
session.Dispose();
} // End Sub Insert
// nhDBapi.DBaccess.Insert<nhDBapi.DB.Tables.clsDomains>(xx);
public static void Insert<T>(List<T> ListOfRowsToAdd)
{
NHibernate.ISession session = m_bsfSessionFactory.OpenSession();
NHibernate.ITransaction transaction = session.BeginTransaction();
// Tell NHibernate that this object should be saved
// commit all of the changes to the DB and close the ISession
try
{
for (int i = 0; i < ListOfRowsToAdd.Count; ++i )
{
session.SaveOrUpdate(ListOfRowsToAdd[i]);
}
/*
foreach (T tThisRow in ListOfRowsToAdd)
{
// session.Save(tThisRow);
session.SaveOrUpdate(tThisRow);
} // Next tThisRow
*/
transaction.Commit();
session.Close();
transaction.Dispose();
session.Dispose();
} // End try
catch (Exception ex)
{
MsgBox(ex.Message, "Error");
//Console.WriteLine(ex.InnerException.Message);
System.Environment.Exit(1);
} // End catch
} // End Sub Insert