Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Entity Frmaework & runtime casting, IEnumerable -> EntityCollection 
:(
    Опции темы
Kefir
Дата 29.8.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: нет
Всего: 87



Вечер добрый. Надеюсь, что среди нас есть спецы по EF. Итак, суть такова - есть EF модель, POCO, Proxies, все дела. А есть контрол, который умеет следить за состоянием коллексии через ифейс INotifyCollectionChanged. Так вот суть дела такая - привязка к коллекции происходит так:
Код

public void TryBindToCollection(IEnumerable collection)
{
    INotifyCollectionChanged c = collection as INotifyCollectionChanged;

    // раз законвертить не удалось, то просто выходим
    if(c == null) return;

    // тут идёт привязка и прочее
    c.SomeEvent += someHandler;
}


С обычными коллекциями (к примеру ObservableCollection) это прекрасно работает. Только вот когда доходит дело до навигационных свойств обьектов EF преобразование типов не помогает. То биш возвращает null. То есть в модели, где есть свойство:
Код

public class MyEntity
{
    // Navigation properies
    public virtual ICollection<MyChildEntity> Children;
}

Преобразование его в рантайме даст null. А должно быть валидным, ибо прокси преобразуют это дело в EntityCollection. В рантайме я уже исследовал тип вдоль и поперёк - вроде должно быть всё правильно, но не работает. Пока нашел вариант подписки на события самого EntityCollection через dynamic, но это как-то похоже на хак - приходится вязаться и с INotifyCollectionChanged и с EntityCollection.

Вопрос - собстна кто-нибудь может мне объяснить такое странное поведение и как таки можно преобразовать это дело нормальным образом? Ведь если dynamic спокойненько позволяет привязать к EntityCollection, то и обычное приведение типов должно сработать...
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.