Как я могу преобразовать EF4 Code-First ICollection в EntityCollection? - PullRequest
2 голосов
/ 18 февраля 2011

Скажем, у меня есть следующая сущность:

public class Post
{
    public int Id { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
}

Когда я получаю объект Post из базы данных, мне нужно преобразовать коллекцию Comments в EntityCollection<T>, чтобы я мог проверить некоторые EF4связанные данные о коллекции, например, если данные были загружены или нет.

К сожалению, если я пытаюсь выполнить прямое приведение от ICollection<T> до EntityCollection<T>, я получаю исключение из-за того, чточто свойство Comments является System.Collections.Generic.List<T> и не может быть преобразовано в EntityCollection<T>.

Итак, как мне получить информацию EF для коллекции при использовании кода вначале?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Это может быть более уместным в качестве комментария, но я надеюсь, что гуру EF4 сможет ответить на это и объяснить, что происходит. Я задал вопрос ниже некоторое время назад, на CTP4. Один из ответов был от автора рецептов EF 4, в котором говорилось, что во время выполнения коллекция будет создана как EntityCollection, если она будет объявлена ​​как виртуальная и ICollection (что, несомненно, делает задающий вопрос).

Кроме того, Роуэн Миллер (который входит в команду EF4) написала более продвинутую опцию, которая, как указывал ранее опрашивающий, не работает. Что тут происходит? Текущий CTP не поддерживает это, в то время как предыдущий поддерживает?

Использование CreateSourceQuery в CTP4 Code First

0 голосов
/ 28 марта 2012

Пока ваш класс POCO соответствует требованиям для создания прокси-сервера отслеживания изменений , прокси заменит свойства ICollection объектами EntityCollection. На первый взгляд ваш класс отвечает этим требованиям, но вы также должны убедиться, что для для параметра ProxyCreationEnabled установлено значение true.

...