Não estou conseguindo implementar os relacionamentos no banco de dados diretamente da aplicação usando NHibernate, estou com o seguinte erro abaixo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace SistemaOCW.Entidade
{
public class Empresa
{
public virtual int Id { get; set; }
public virtual string Nome { get; set; }
public virtual string Cnpj { get; set; }
public virtual string Endereco { get; set; }
public virtual string Bairro { get; set; }
public virtual string Cidade { get; set; }
public virtual string Cep { get; set; }
public virtual string Telefone { get; set; }
public virtual string Email { get; set; }
public virtual string Contato { get; set; }
public virtual IList<Cliente> Clientes { get; set; }
}
}
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="SistemaOCW"
namespace="SistemaOCW.Entidade">
<class name ="Empresa">
<id name ="Id">
<generator class ="identity"/>
</id>
<property name="Nome"/>
<property name="Cnpj"/>
<property name="Endereco"/>
<property name="Bairro"/>
<property name="Cidade"/>
<property name="Cep"/>
<property name="Telefone"/>
<property name="Email"/>
<property name="Contato"/>
<bag name="Clientes">
<key column="EmpresaId"/>
<one-to-many class="Cliente"/>
</bag>
</class>
</hibernate-mapping>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace SistemaOCW.Entidade
{
public class Cliente
{
public virtual int Id { get; set; }
public virtual int Codcliente { get; set; }
public virtual string Nome { get; set; }
public virtual string Cnpj { get; set; }
public virtual string Endereco { get; set; }
public virtual string Bairro { get; set; }
public virtual string Cidade { get; set; }
public virtual string Cep { get; set; }
public virtual string Telefone { get; set; }
public virtual string Email { get; set; }
public virtual string Contato { get; set; }
public virtual Empresa Empresa { get; set; }
}
}
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="SistemaOCW"
namespace="SistemaOCW.Entidade">
<class name ="Cliente">
<id name ="Id">
<generator class ="identity"/>
</id>
<property name="Codcliente"/>
<property name="Nome"/>
<property name="Cnpj"/>
<property name="Endereco"/>
<property name="Bairro"/>
<property name="Cidade"/>
<property name="Cep"/>
<property name="Telefone"/>
<property name="Email"/>
<property name="Contato"/>
<many-to-one name="Empresa" column="EmpresaId"/>
</class>
</hibernate-mapping>
NHibernate.Exceptions.GenericADOException não foi manipulada pelo código do usuário
HResult=-2146232832
Message=could not insert: [SistemaOCW.Entidade.Cliente][SQL: INSERT INTO Cliente (Codcliente, Nome, Cnpj, Endereco, Bairro, Cidade, Cep, Telefone, Email, Contato, EmpresaId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
Source=NHibernate
SqlString=INSERT INTO Cliente (Codcliente, Nome, Cnpj, Endereco, Bairro, Cidade, Cep, Telefone, Email, Contato, EmpresaId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
StackTrace:
em NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert(SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder)
em NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Boolean[] notNull, SqlCommandInfo sql, Object obj, ISessionImplementor session)
em NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Object obj, ISessionImplementor session)
em NHibernate.Action.EntityIdentityInsertAction.Execute()
em NHibernate.Engine.ActionQueue.Execute(IExecutable executable)
em NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object entity, EntityKey key, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
em NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object entity, Object id, IEntityPersister persister, Boolean useIdentityColumn, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
em NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object entity, String entityName, Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
em NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent event)
em NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent event)
em NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event)
em NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event)
em NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
em NHibernate.Impl.SessionImpl.Save(Object obj)
em SistemaOCW.DAO.ClienteDAO.Adiciona(Cliente cliente) na d:\OCW\SistemaOCW\SistemaOCW\DAO\ClienteDAO.cs:linha 26
em SistemaOCW.Controllers.ClienteController.Adiciona(Cliente cliente) na d:\OCW\SistemaOCW\SistemaOCW\Controllers\ClienteController.cs:linha 34
em lambda_method(Closure , ControllerBase , Object[] )
em System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
em System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
em System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
em System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
em System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
InnerException: MySql.Data.MySqlClient.MySqlException
HResult=-2147467259
Message=Cannot add or update a child row: a foreign key constraint fails (`compras`.`cliente`, CONSTRAINT `FKE156C0F996677116` FOREIGN KEY (`Id`) REFERENCES `empresa` (`Id`))
Source=MySql.Data
ErrorCode=-2147467259
Number=1452
StackTrace:
em MySql.Data.MySqlClient.MySqlStream.ReadPacket()
em MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
em MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
em MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
em MySql.Data.MySqlClient.MySqlDataReader.NextResult()
em MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
em MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
em MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
em NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd)
em NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert(SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder)
InnerException:
enter code here