NHibernate DuplicateMappingException cuando dos clases tienen el mismo nombre pero diferentes espacios de nombres
Tengo una clase en la raíz de mi modelo de dominio que se ve así:
namespace Domain
{
public class Foo { ... }
}
También tengo otra clase con el mismo nombre en un espacio de nombres diferente:
namespace Domain.SubDomain
{
public class Foo { ... }
}
Para mis asignaciones, tengo un directorio Mapping
con un subdirectorio llamado SubDomain
que contiene asignaciones para las clases de dominio que se encuentran en el espacio de nombres Domain.SubDomain
. Todos están en la misma asamblea.
Sin embargo, cuando intento cargarlos con NHibernate, sigo obteniendo un DuplicateMappingException
... a pesar de que ambos Foos tienen diferentes espacios de nombres. El código que estoy usando para cargar mi configuración de NHibernate es el siguiente:
var cfg = new Configuration()
.Configure()
.AddAssembly("Domain");
¿Cómo puedo decirle a NHibernate que me permita usar dos entidades con el mismo nombre (pero diferentes espacios de nombres)?
3 answers
Encontré la respuesta en el sitio web de Hibernación:
Si tiene dos clases persistentes con el mismo nombre no calificado, usted debe establecer auto-import= "false". Un se producirá una excepción si intenta para asignar dos clases a la misma nombre "importado".
Lo utilicé como un atributo para la etiqueta <hibernate-mapping>
y funcionó.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-29 18:21:38
He tenido el mismo problema. Lo resolví así:
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(...)
.AdoNetBatchSize(500))
.Mappings(m => m.FluentMappings
.Conventions.Setup(x => x.Add(AutoImport.Never()))
.AddFromAssembly(...)
.AddFromAssembly(...)
.AddFromAssembly(...)
.AddFromAssembly(...))
;
La parte importada es: .Conventions.Setup(x => x.Add(AutoImport.Never()))
.
Todo parece estar funcionando bien con esta configuración.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-29 07:57:27
Puede especificar un nombre completo de clases en el documento de asignación de la siguiente manera:
<class name="SeeMe.Data.People.Relationship, SeeMe.Data" ... > ...
Donde SeeMe.Los datos son el ensamblaje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-20 22:26:44