Quantcast
Channel: ADO.NET, Entity Framework, LINQ to SQL, NHibernate
Viewing all articles
Browse latest Browse all 1698

Receiving GenericADOException while using NHibernate 4.1 with MySQL Database

$
0
0

Hi,

I am new to NHibernate, while using NHibernate with MySQL database I am getting error at  transaction.Commit().

Error:

NHibernate.Exceptions.GenericADOException was unhandled
  HResult=-2146232832
  Message=could not insert: [NHibernateMysql.Domain.Character#9d3b52dd-5fa2-4f3b-84fb-1d766994be30][SQL: INSERT INTO Character (name, Id) VALUES (?, ?)]
  Source=NHibernate
  SqlString=INSERT INTO Character (name, Id) VALUES (?, ?)

InnerException:
       ErrorCode=-2147467259
       HResult=-2147467259
       Message=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 'Character (name, Id) VALUES ('MikeAbyss', '9d3b52dd-5fa2-4f3b-84fb-1d766994be30'' at line 1
       Number=1064
       Source=MySql.Data
       StackTrace:
            at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
            at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
            at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
            at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
            at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
            at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
            at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd)
            at NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation expectation)
            at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object id, Object[] fields, Boolean[] notNull, Int32 j, SqlCommandInfo sql, Object obj, ISessionImplementor session)
       InnerException:




Here is my Code:

Domain Class:

namespace NHibernateMysql.Domain
{
    public class Character
    { public virtual Guid Id { get; set; }
        public virtual string SName { get; set; }
    }
}

Character.hbm.xml

<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="NHibernateMysql"
                   namespace="NHibernateMysql.Domain"><class name="Character"><id name="Id">
      <column name="Id" />
      <generator class="guid" />
    </id><property name="SName"><column name="name" sql-type="varchar(45)" not-null="false"/></property></class></hibernate-mapping>

hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8" ?><hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"><session-factory><property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property><property name="dialect">NHibernate.Dialect.MySQL5Dialect</property><property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property><property name="connection.connection_string">Server=192.168.200.35;Database=NHibernate;User ID=root;Password=1234;</property><property name="show_sql">true</property></session-factory></hibernate-configuration>

NHibernateHelper.cs

namespace NHibernateMysql
{
    public class NHibernateHelper
    {
        private static ISessionFactory _sessionFactory;
        private static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    var configuration = new Configuration();
                    configuration.Configure();
                    configuration.AddAssembly(typeof(Character).Assembly);
                    _sessionFactory = configuration.BuildSessionFactory();
                }
                return _sessionFactory;
            }
        }
        public static ISession OpenSession()
        {
            return SessionFactory.OpenSession();
        }
    }
}

CharacterRepository.cs

using NHibernate;
using NHibernateMysql.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NHibernateMysql
{
    public class CharacterRepository
    {
        public void Add(Character newCharacter)
        {
            using (ISession session = NHibernateHelper.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    session.Save(newCharacter);
                    transaction.Commit();
                }
            }
        }

    }
}

Program.cs

using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
using NHibernateMysql.Domain;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;


namespace NHibernateMysql
{
    class Program
    {
        static void Main(string[] args)
        {
            LoadHibernateCfg();
            /*CRUD*/
            //CREATE!
            CharacterRepository repo = new CharacterRepository();
            var MikeAbyss = new Character { SName = "MikeAbyss" };
            repo.Add(MikeAbyss);

            Console.ReadKey();
        }
        public static void LoadHibernateCfg()
        {

            Configuration configuration = new Configuration();
            configuration.Configure();
            configuration.AddAssembly(typeof(Character).Assembly);
            SchemaExport schemaExport = new SchemaExport(configuration);
            schemaExport.SetDelimiter(";");
            using (TextWriter stringWriter = new StreamWriter("create.mysql"))
            {
                schemaExport.Execute(false, false, false, null, stringWriter);
            } } } }

Please help!


Viewing all articles
Browse latest Browse all 1698

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>