System.Data.Objects.DataClasses.EntityCollection не содержит определения для 'Single' - PullRequest
2 голосов
/ 07 ноября 2011

Некоторая справочная информация, я использую MVC3 w / EF & db первый метод, наряду с шаблонами Razor. Я передаю модель представления в представление, эта модель представления имеет несколько различных коллекций obj, я использую один из них для заполнения веб-сетки (wgSettings) в качестве параметра источника. Ниже приведен код, в котором я пытаюсь получить подробную информацию о связанной строке. Подробности: MyInfo - это словарь из модели представления, item - анонимный объект строки, который используется веб-сеткой для заполнения строки item.Value.Value - значение поля id объекта из словаря, который я хочу получить MySettings является System.Data.Objects.DataClasses.EntityCollection, поэтому я могу использовать методы расширения, такие как Single (), FirstOrDefault () и т. Д.

с помощью быстрого просмотра я могу перемещаться по объекту и видеть ожидаемые значения, однако при отладке и доступе к view @ runtime я получаю следующую ошибку.

На линии: "MySettings.Single @ Model.MyInfo [Guid.Parse (item.Value.Value)]. (). Значение" отладчик говорит 'System.Data.Objects.DataClasses.EntityCollection' не содержит определения для 'Single', но когда я быстро просматриваю его, я получаю значение.

Ниже приведен код.

wgSettings.Column(header: "Value", columnName:"Value", canSort:true, format:  
        @<text>
        @if (item.Value.Type == "Guid" && item.Value.Value != null) {             

            @Model.MyInfo[Guid.Parse(item.Value.Value)].MySettings.Single().Value
        }
        else if (item.Value.Type == "Boolean") { 
            @item.Value.Value 
        }
        else {
            @item.Value.Value 
        }

        </text>

1 Ответ

2 голосов
/ 07 ноября 2011

Методы расширения Linq не входят в сферу применения, вам нужно добавить это вверху (или вы можете добавить в web.config)

@using System.Linq;

Или в файле web.config в папке views:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Linq" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

Смотрите этот вопрос для получения информации о похожей проблеме для другого пространства имен:

Использование System.Data.Linq в представлении Razor

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