I have a program that is using FluenNHibernate to access a MySQL
database, and while it reads all information fine, I am getting an
error anytime I try to update or insert a record. During
troubleshooting, I have noted that the docType sent has appropriate
values for Code and Desc. Also, I am having no problem getting data
and deleting a record.
Any Help would be greatly appreciated.
Ed.
The error:
Error:
could not insert: [FileManager.Models.FM_DocType][SQL: INSERT INTO
FM_DocType (Code, Desc) VALUES (?, ?)]
Source:
NHibernate
Inner Exception:
MySql.Data.MySqlClient.MySql
Exception: You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'Desc) VALUES ('T', 'Test')' at line 1
at MySql.Data.MySqlClient.MySqlStream.ReadPacket() at
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow,
Int32& insertedId) at MySql.Data.MySqlClient.Driver.GetResult(Int32
statementId, Int32& affectedRows, Int32& insertedId) at
MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId) at
MySql.Data.MySqlClient.MySqlDataReader.NextResult() at
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior
behavior) at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() at
MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() at
NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd) at
NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert(SqlCommandInfo
insertSQL, ISessionImplementor session, IBinder binder)
Stack Trace:
at
NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert(SqlCommandInfo
insertSQL, ISessionImplementor session, IBinder binder) at
NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[]
fields, Boolean[] notNull, SqlCommandInfo sql, Object obj,
ISessionImplementor session) at
NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[]
fields, Object obj, ISessionImplementor session) at
NHibernate.Action.EntityIdentityInsertAction.Execute() at
NHibernate.Engine.ActionQueue.Execute(IExecutable executable) at
NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object
entity, EntityKey key, IEntityPersister persister, Boolean
useIdentityColumn, Object anything, IEventSource source, Boolean
requiresImmediateIdAccess) at
NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object
entity, Object id, IEntityPersister persister, Boolean
useIdentityColumn, Object anything, IEventSource source, Boolean
requiresImmediateIdAccess) at
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object
entity, String entityName, Object anything, IEventSource source,
Boolean requiresImmediateIdAccess) at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
event) at
NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
event) at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent
event) at
NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent
event) at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent
event) at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent
event) at NHibernate.Impl.SessionImpl.Save(Object obj) at Fil
My Code for update and insert:
public static void InsertFM_DocType(FM_DocType docType)
{
using (ISession session =
DataConnector.Instance.SessionFactory.OpenSession())
{
using (ITransaction trans = session.BeginTransaction())
{
session.Save(docType);
trans.Commit();
}
}
}
public static void UpdateFM_DocType(FM_DocType docType)
{
using (ISession session =
DataConnector.Instance.SessionFactory.OpenSession())
{
using (ITransaction trans = session.BeginTransaction())
{
session.Update(docType);
trans.Commit();
}
}
}My DataConnector Class:
using System;
using FileManager.Models;
using FluentNHibernate;
using FluentNHibernate.Automapping;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
namespace FileManager.Utilities
{
public class DataConnector
{
public DataConnector()
{
CreateSessionFactory();
}
public static DataConnector Instance
{
get
{
lock (_myLock)
{
return _singleton;
}
}
set
{
lock (_myLock)
{
_singleton = value;
}
}
}
public ISessionFactory SessionFactory
{
get
{
return _sessionFactory;
}
}
private void CreateSessionFactory()
{
AutoPersistenceModel model = CreateMappings();
FluentConfiguration config = Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(c => c
.Server("localhost")
.Database("filedata")
.Username("root")
.Password("")))
.Mappings(m =>
m.AutoMappings.Add(model));
_sessionFactory = config.BuildSessionFactory();
}
private AutoPersistenceModel CreateMappings()
{
return AutoMap
.Assembly(System.Reflection.Assembly.GetCallingAssembly())
.Where(t => t.Namespace == "FileManager.Models"); //
This is where your models for NHibernate are located.
}
private static object _myLock = new object();
private static DataConnector _singleton;
private ISessionFactory _sessionFactory;
}}
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.