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.

Reply via email to