2014-12-22 2 views
0

У меня есть два (упрощенный) классы в ORMLite (с помощью поставщика SQLite, но не имеет значения):Есть ли встроенный способ для извлечения родительского объекта?

public class ParentClass 
{ 
    [AutoIncrement] 
    public long Id { get; set; } 

    [Required] 
    [Index(Unique = true)] 
    public String Name { get; set; } 

    [Reference] 
    public List<ChildClass> Children { get; set; } 
} 

public class ChildClass 
{ 
    [AutoIncrement] 
    public long Id { get; set; } 

    [Required] 
    [Index(Unique = true)] 
    public String Name { get; set; } 

    [Required] 
    public long ParentId { get; set; } 
} 

Когда у меня есть родитель, я могу просто сделать

var firstChild = parent.Children.First(); 

или аналогичный для непосредственного получения дочернего класса. Однако, когда мне нужно сделать это наоборот, мне нужно сделать

var parent = db.Single<ParentClass>(new { Id = child.ParentId }); 

Есть ли способ, чтобы создать классы данных, так что я могу просто сделать следующее?

var parent = child.Parent; 

Оптимальное решение будет один, где родитель будет получен только из базы данных один раз (Примечание: Я нахожусь в однопользовательской среде и нет никто/ничего модифицируя свою базу данных извне).

+0

См. [«Если вопросы включают« теги »в их названиях?»] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), где консенсус «нет, они не должны»! –

ответ

1

Вы должны иметь свойство, как:

[Reference] 
public ParentClass Parent { get; set; } 

на ChildClass, а затем вам нужно, чтобы убедиться, что свойство правильно заполнен. У вас есть свойство ParentId в дочерней таблице в базе данных, так что это не должно быть проблемой для получения родителя по его идентификатору - я полагаю.

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