Почему EntityCollection иногда предоставляет методы расширения, а иногда нет? - PullRequest
2 голосов
/ 10 января 2011

Я пытаюсь внести некоторые изменения в нашу модель Entity Framework, которая в настоящее время доставляет мне массу неприятностей - идея состоит в том, чтобы изменить отношение 1: 1 между двумя базами данных в отношение многие-многие.Если вы внесете изменение в EF, а затем перестроите базу данных, то объект, который она генерирует для представления этой взаимосвязи, - что неудивительно, - EntityCollection вместо объекта одного типа.ошибки, которые генерирует это изменение и изменяющие ссылки DatabaseObject на DatabaseObject.ElementAt (0), чтобы я мог получить его для сборки.Однако один набор ссылок, похоже, не даст мне методы расширения EntityCollection, позволяющие работать с коллекцией - такие как ElementAt (), Select (), First () и т. Д., И я не понимаю, почему.

В тех случаях, когда это работает, объект генерируется из базового класса, который затем наследуется:

            _task = _customersRepository.GetDeepTask(taskId);
            _customerService = _task.CustomerServiceFeature.CustomerService;

           //then in class which inherits above code

           string conStr = customerService.DatabaseObject.ElementAt(0).GetConnectionString(_customerService);

Но в случае, когда у меня нет методов расширения, он генерируетсякак это:

    public void Execute(ScheduledTask task)
    {
        CustomerService service = task.CustomerServiceFeature.CustomerService;
        //this errors and doesn't offer extension methods
        string ConnectionString = service.DatabaseObject.GetConnectionString(service);
    }

Я не понимаю, почему эти два экземпляра ведут себя по-разному?

Приветствия, Мэтт

1 Ответ

5 голосов
/ 10 января 2011

Вам необходимо объявление using для пространства имен, содержащего классы метода расширения.

например. чтобы увидеть Select, Where методы расширения для IEnumerable<T> и IQueryable<T>, необходимо указать

using System.Linq;

в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...