Beliebige Verwendung von nHibernate mit einem Domain-Objekt & DTO-Objekt von einer gemeinsamen Schnittstelle implementiert? Ich versuche, alle meine nHibernate-Attribute in das Domain-Objekt zu trennen, wobei meine DTOs und die Schnittstelle sauber bleiben.nHibernate (mit Castle ActiveRecord) mit C# -Schnittstellen (speziell für DTOs)
Das Problem kommt mit nHibernate werfen Fehler, wenn es versucht, die Schnittstellen mit den konkreten Klassen zuzuordnen.
NHibernate.MappingException: Verein Referenzen unmapped Klasse: IContact
Ich verstehe, warum sein über die Verwendung des nicht-hibernated Schnittstelle beschweren, aber ich bin zu kämpfen, um visuellen einen Weg, um sie zu restrukturieren. Eine Skelett-Reproduktion meines Codes ist wie folgt dargestellt, irgendwelche Ideen, wie ich meinen Code besser strukturiere?
public interface ICompany
{
IList<IContact> Contacts { get; set; }
}
public class CompanyDTO : ICompany
{
private IList<IContact> contacts;
public IList<IContact> Contacts { get { return this.contacts; } set { this.contacts = value; } }
}
[ActiveRecord]
public class Company : ActiveRecordBase<Company>, ICompany
{
private IList<IContact> contacts;
[HasMany(Inverse=true, Table="Contact", ColumnKey="CompanyId")]
[ScriptIgnore]
public IList<IContact> Contacts { get { return this.contacts; } set { this.contacts = value; } }
}
Edit:
ich eine gemeinsame Schnittstelle zu wollen, so dass ich sicher, dass sie die gleichen Felder halten (. Dh auf der Compiler lehnt sie konsistent zu halten). Es ermöglicht mir auch, die DTOs im Ansichtsteil meiner Anwendung zu verwenden, aber sie auf Domänenobjekte für den Geschäfts- und Datenzugriff zu übertragen. Die Lösung von Alex funktioniert auch nicht, weil die Kontakte von ICompany vom Typ IList und nicht von IList sind. Ich möchte es als IContact beibehalten, damit mein DTO-Objekt das Contact Domain-Objekt nicht kennt.
Hej, wissen Sie, wie man das auch mit Fluent macht? :) – asgerhallas
+1 Vielen Dank – IamStalker