Probably you need to escape column Desc, since it's a reserved word.

IIRC, you should modify the mapping to something like this:
<property name="Desc" column="`Desc`"/> (Note the backquotes around
Desc in column).

I don't know how to do that with FNH, but there must be way.


On Wed, Sep 29, 2010 at 5:38 PM, Ed <[email protected]> wrote:
> 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.
>
>

-- 
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