Acabo de cambiar a Fluiber NHibernate y me he encontrado con un problema y no he encontrado ninguna información al respecto.Fluido NHibernate, trabajando con interfaces
Aquí es el caso:
public class Field : DomainObject, IField
{
public Field()
{
}
public virtual string Name { get; set; }
public virtual string ContactPerson { get; set; }
public virtual bool Private { get; set; }
public virtual IAddress Address { get; set; }
}
IAddress es una interfaz implementada por una clase llamada Dirección
public class Address : DomainObject, IAddress
{
public Address()
{
}
public virtual string City { get; set; }
public virtual string Country { get; set; }
public virtual string PostalCode { get; set; }
public virtual string StreetAddress { get; set; }
}
He aquí mis archivos de asignación para ambas clases
DIRECCIÓN
public class AddressMap : ClassMap<Address>
{
public AddressMap()
{
WithTable("Addresses");
Id(x => x.Id, "Id").Access.AsCamelCaseField(Prefix.Underscore).GeneratedBy.Guid();
Map(x => x.City, "City");
Map(x => x.Country, "Country");
Map(x => x.PostalCode, "PostalCode");
Map(x => x.StreetAddress, "StreetAddress");
}
}
CAMPO
public class FieldMap : ClassMap<Field>
{
public FieldMap()
{
WithTable("Fields");
Id(x => x.Id, "Id").Access.AsCamelCaseField(Prefix.Underscore).GeneratedBy.Guid();
Map(x => x.Name, "Name");
Map(x => x.ContactPerson, "ContactPerson");
Map(x => x.Private, "Private");
References(x => x.Address, "AddressId").Cascade.Delete().Cascade.SaveUpdate();
}
}
Así que cuando traté de retrive un objeto de campo de mi base de datos, me sale un error que indica que NHibernate IAddress no está asignada. ¿Hay alguna forma de especificar a NHibernate para usar la clase Address en la asignación?
Háganme saber si necesita más información.
Muchas gracias,
Charles
¿Cómo está modelando la jerarquía de IAddress en la base de datos? ¿Tabla por jerarquía (una tabla que contiene todos los tipos de dirección) o tabla por clase concreta? Dijiste que cambiaste a Fluent, por lo que publicar un mapa XML de ejemplo podría ayudarte a determinar lo que intentas lograr. –
De hecho, cambié de ADO.NET Entity Framework a Nhibernate con Fluidez NHibernate. En mi base de datos, hay una tabla que contiene todos los tipos de dirección. Por cierto, decidí eliminar esas interfaces, me di cuenta de que era inútil. Pero creo que la pregunta sigue siendo válida. Gracias, Charles –