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.
