2013-04-06 4 views
0

Скажем:Добавить элемент списка по ID

public class Parent 
{ 
    public virtual IList<Child> Childs { get; set; } 

    public void AddChild(long childId) 
    { 
     // Link existing child to parent. 
    } 
} 

Я пытаюсь реализовать DDD с помощью NHibernate так интересно, как связать дочерний элемент с родителем, не извлекая его из базы данных.

+0

Вы видели этот вопрос, http://stackoverflow.com/questions/11022036/proper-way-of-creating-child-entities-with-ddd – Rippo

+0

Не было бы DDD подразумевать, что у вас есть 'public void AddChild (Child child) 'вместо того, чтобы принимать' long childId'? – frictionlesspulley

+0

В реализации Марка Ниджхофа я не знаю, как это сделать. https://github.com/MarkNijhof –

ответ

0

Вы не можете. Объектно-ориентированный подход будет:

public class Parent 
{ 
    public virtual IList<Child> Childs { get; set; } 

    public void AddChild(Child child) 
    { 
     child.Parent = this; 
     Childs.Add(child); 
    } 
} 

код, который вызывает этот метод может добавить ребенка, не извлекая его с помощью ISession.Load:

var child = session.Load<Child>(childId); 
parent.AddChild(child); 

нагрузки создаст динамический прокси с идентификатором набора. Обратите внимание, что ребенок будет загружен, если вы получите доступ к любым другим его свойствам, и что доступ к коллекции Childs родителя приведет к его загрузке.

Смежные вопросы