Sono appena passato a Fluent NHibernate e ho riscontrato un problema e non ho trovato alcuna informazione a riguardo.Fluente NHibernate, funziona con le interfacce
Qui è il 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 è un'interfaccia implementata da una classe denominata Indirizzo
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; }
}
Ecco il mio file di mapping per entrambe le classi
INDIRIZZO
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();
}
}
Così, quando ho provato a retrive un oggetto campo dalla mia base di dati, ottengo un errore che informa che NHibernate IAddress non è mappata. C'è un modo per specificare a NHibernate di usare la classe Address nella mappatura?
Per favore fatemi sapere se sono necessarie ulteriori informazioni.
Grazie mille,
Charles
Come si modella la gerarchia di IAddress nel database? Tabella per gerarchia (una tabella che contiene tutti i tipi di indirizzo) o table-per-concrete-class? Hai detto che sei passato a Fluent, quindi pubblicare un esempio di mappatura XML potrebbe aiutare a determinare ciò che stai cercando di realizzare. –
In effetti sono passato da ADO.NET Entity Framework a Nhibernate con Fluent NHibernate. Nel mio database, c'è una tabella che contiene tutti i tipi di indirizzo. A proposito, ho deciso di rimuovere quelle interfacce, ho capito che era inutile. Ma penso che la domanda sia ancora valida. Grazie, Charles –