Grundfrage: Wie erstelle ich eine bidirektionale 1: n-Karte in Fluent NHibernate?Fluent NHibernate: Wie man One-to-Many bidirektionale Mapping erstellen?
Details:
Ich habe ein übergeordnetes Objekt mit vielen Kindern. In meinem Fall ist es für das Kind bedeutungslos, kein Elternteil zu haben, also möchte ich in der Datenbank, dass der Fremdschlüssel zum Elternteil NOT NULL constraint hat. Ich erstelle automatisch meine Datenbank aus dem Fluent NHibernate Mapping.
ich einen Elternteil mit vielen Kind-Objekten wie folgt:
public class Summary
{
public int id {get; protected set;}
public IList<Detail> Details {get; protected set;}
}
public class Detail
{
public int id {get; protected set;}
public string ItemName {get; set;}
/* public Summary Owner {get; protected set;} */ //I think this might be needed for bidirectional mapping?
}
Hier ist die Abbildung I mit gestartet:
public class SummaryMap : ClassMap<Summary>
{
public SummaryMap()
{
Id(x => x.ID);
HasMany<Detail>(x => x.Details);
}
}
public class DetailMap : ClassMap<Detail>
{
public DetailMap()
{
Id(x => x.ID);
Map(x => x.ItemName).CanNotBeNull();
}
}
in der Detailtabelle sollte die Summary_id nicht Null sein, weil In meinem Fall ist es bedeutungslos, ein Detailobjekt nicht an das Zusammenfassungsobjekt anzuhängen. Wenn Sie jedoch nur die Map HasMany() verwenden, bleibt der Fremdschlüssel für die Zusammenfassung_ID leerbar.
Ich fand in der NHibernate docs (http://www.hibernate.org/hib_docs/nhibernate/html/collections.html), dass "Wenn das übergeordnete Element erforderlich ist, verwenden Sie eine bidirektionale Eins-zu-viele-Verknüpfung".
Also wie erstelle ich die bidirektionale Eins-zu-viele-Karte in Fluent NHibernate?
Gibt es wirklich keine Möglichkeit, die Fremdschlüsselspalte zu machen "nicht nullable" ohne auf das Kind einen Verweis auf das übergeordnete Hinzufügen ? –
+1 Ich wünschte, ich könnte wieder abstimmen. –