ASP.NET MVC Razor View, неправильно отображает связанные с Linq to SQL сущности - PullRequest
0 голосов
/ 31 августа 2011

Я использую Linq to SQL в проекте ASP.NET MVC3 с представлениями Razor.

Кажется, что мои объекты L2S работают нормально в коде контроллера / модели;Я могу ссылаться и работать с коллекциями дочерних классов для моих связанных объектов.Тем не менее, я не могу сделать это в моих взглядах Razor.Intellisense распознает коллекцию дочерних классов:

Model.ChildObjects

Но он не может обеспечить завершение кода для самого объекта ChildObjects.Попытка использовать коллекцию как коллекцию следующим образом:

foreach(var item in Model.ChildObjects)

приводит к следующей встроенной ошибке в редакторе:

foreach statement cannot operate on variables of type
System.Data.Linq.EntitySet<ChildObjectType> because 
System.Data.Linq.EntitySet<ChildObjectType> does not
contain a public definition for 'GetEnumerator'

Кажется, что-то не так с тем, на что ссылаютсяс точки зрения бритвы.Когда я пытаюсь использовать код, подобный этому:

@Model.ChildObjects.Count()

я получаю эту ошибку компиляции при выполнении:

The type 'System.Data.Linq.EntitySet`1<T0>' is defined in an assembly that is
not referenced. You must add a reference to assembly 
'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Я ничего не изменил в файлах web.configдля проекта.Я недавно обновил свой Windows 7 до SP1 и обновил свой NuGet ... но я не уверен, что там будет что-то связанное.

Ответы [ 3 ]

6 голосов
/ 31 августа 2011

Я не знаю причину этого, и поэтому оставлю этот вопрос открытым на некоторое время, если кто-то может объяснить, почему я работал;

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

В нем кто-то упоминает установку ссылки на System.Data.Linq на «Копировать локально» = true. Это решило проблему, с которой я здесь столкнулся.

0 голосов
/ 31 августа 2011

Несмотря на то, что вы, похоже, решили свою проблему, я думаю, что потенциально более серьезной проблемой является то, что вы передаете доменные модели на ваше усмотрение.Я бы порекомендовал против этого, так как это делает ваши файлы представлений особенно зависимыми от вашего уровня данных.

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

0 голосов
/ 31 августа 2011

Попробуйте добавить пространство имен System.Data.Linq в файл web.config в папке views.

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