Ich bin gerade auf Fluent NHibernate und ich habe ein Problem festgestellt und habe keine Informationen darüber gefunden.Fluent NHibernate, arbeiten mit Schnittstellen
Hier ist der Fall:
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 ist eine Schnittstelle, durch eine Klasse mit dem Namen Adresse implementiert
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; }
}
für beide Klassen
meine Mapping-Dateien Hier istADDRESS
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");
}
}
FIELD
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();
}
}
Wenn ich also ein Feldobjekt aus meiner Datenbank retrive versucht, erhalte ich einen NHibernate Fehler, der besagt, dass iAddress nicht abgebildet wird. Gibt es eine Möglichkeit, NHibernate anzugeben, die Address-Klasse im Mapping zu verwenden?
Bitte lassen Sie mich wissen, wenn weitere Informationen benötigt werden.
Vielen Dank,
Charles
Wie modellierst du die IAddress-Hierarchie in der Datenbank? Tabelle-pro-Hierarchie (eine Tabelle, die alle Arten von Adresse enthält) oder Tabelle-für-konkrete-Klasse? Sie haben angegeben, dass Sie auf Fluent umgestiegen sind. Daher könnte die Veröffentlichung eines XML-Mappings helfen, zu bestimmen, was Sie erreichen möchten. –
In der Tat wechselte ich von ADO.NET Entity Framework zu Nhibernate mit Fluent NHibernate. In meiner Datenbank gibt es eine Tabelle, die alle Arten von Adressen enthält. Übrigens, ich habe beschlossen, diese Schnittstellen zu entfernen, erkannte ich, dass es nutzlos war. Aber ich denke, die Frage ist immer noch gültig. Danke, Charles –