2009-07-29 8 views
3

ich an meinem ersten NHibernate Projekt arbeiten, so kann dies eine einfache Frage zu sein scheint.Wie speichere ich eine Einheit mit NHibernate, die von anderen komplexen Typen zusammengesetzt ist, aber ich habe nur die ID der anderen komplexen Typen

unten Das ist von meinem realen Szenario vereinfacht die spezifische Frage zu vermitteln.

Können sagen, ich

public class Customer 
{ 
    prop virtual int ID { get; set; } 
    prop virtual string Name { get; set; } 
    prop virtual Region Region { get; set; } 
} 

und meine Region Entity (Regionen sind wie, Nordwest-, MidWest, etc. - eine ziemlich definierte Liste, die in irgendeiner Art von Drop-down wäre) eine Customer-Entität haben

public class Region 
{ 
    prop virtual int ID { get; set; } 
    prop virtual string Name { get; set; } 
    private readonly IList<Customer> _customers = new List<Customer>(); 

    public virtual void Add(Customer customer) 
    { 
     _customers.Add(customer); 
    } 

    public virtual void Remove(Customer customer) 
    { 
     _customers.Remove(customer); 
    } 

    public virtual Customer[] GetCustomers() 
    { 
     return _customers.ToArray(); 
    } 
} 

Wenn ich einen Kunden Entity Persist, ich habe wirklich nur drei Stücke von Informationen haben wollen (Customer.ID, Customer.Name, & Customer.Region.ID), wie kann ich das erreichen, weil NHibernate erwartet Eine Kundenentität, die eine vollständige Regionseinheit enthält (nicht nur die ID) ...

Antwort

6

Sie laden können Sie die Region von ID erhalten, ohne die Datenbank zu treffen. Dadurch erhalten Sie eine Entität, die NHibernate erkennt und Ihnen erlaubt, ohne den zusätzlichen Datenbankaufruf fortzufahren.

Reference

0

Ich denke, wenn Sie bereits über die ID der Region haben, müssen Sie nur noch, dass Id zuweisen zu einem neuen Region Objekt und fügen Sie es Ihren neuen Kunden. Solange Sie für diesen Verein in der Kundenzuordnung auf „alle“ oder „Update“, um die Kaskade Attribut nicht haben (die die Daten der bestehenden Region in der DB in der Tat aktualisieren würde), wird die gegebene Region anhängen zu dem neuen Kunden.

Verwandte Themen