Re: [EF]. Иерархии с нефиксированной глубиной в Entity Frame
От: Sinix  
Дата: 10.02.09 02:45
Оценка:
Если не секрет — вам надо тупо загрузить всё содержимое таблицы или только все подузлы одного узла (независимо от уровня вложенности)?

Если всё дерево — то списком или только корни?

Изначально проблема в том, что параллельно селекту со всей таблицы оно строит граф объектов — отсюда ваша структура. Как такового дублирования здесь нет — просто ссылки на одно и то же подразделение лежат в списке и в свежепостроенном графе. Так что ничего страшного.

Т.е. если хотите получить прекэшированное дерево — сначала забираете весь список, делаете его ToList() /*чтобы кэшировать*/ и делаете по этому списку where простым linq to objects. Вуаля

Ещё варианты:

1 — выгребать только корни + инклюдить с запасом (тысячи хватит? ). // кажется будет аццкий sql

2 — попробовать написать хранимку и выгребать данные через неё... // Весь гемморой прекрасно представляю

3 — Попытаться поискать на тему recursive LINQ queries. // куда ж без RTFM?

Если не трудно, попрофайлите SQL, что приходит на сервер при использовании .Include и киньте сюда. Может чего и наклюнется...

Да, я бы осторожней подходил к EF. В нынешнем состоянии оно не очень-то подходит для типичных десктопных приложений. Ссылка на общение с товарищем из EF team:
http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/172ae667-d20a-4dbf-9e98-39b90387b4f4
Читайте — узнаете много нового. Он там рекомендует писать model view поверх EF и использовать его для биндинга etc. Т.е. биндинга из коробки и без проблем у вас не будет. Не пугает — вперёд

P.S. Боюсь что без костылей не обойтись. EF — он такой загадочный...
P.P.S. А у вас подразделения в 1 иерархии могут относиться к нескольким организациям? Во люди живут...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.