Отсутствующие ссылки, которых нет в MVC3

Я отделил свои модели от своего основного приложения ASP.net MVC3 в библиотеку классов, которая является частью того же решения, что и мой проект, и ссылается на мой проект.

Как бы то ни было, модели в этой библиотеке классов (я скопировал папку моделей в библиотеку классов) говорят, что такие вещи, как system.web.MVC, .Security или даже System.Component.DataAnnotations, не существуют.

Поэтому я предположил, что могу щелкнуть правой кнопкой мыши ссылки и нажать «Добавить ссылку» и найти эти библиотеки .net, но, увы, их не существует.

Итак, как мне их включить? Итак, я могу использовать аннотации данных, безопасность и (видимо) MVC?


person TheWebs    schedule 30.04.2013    source источник
comment
Вы должны включить библиотеки DLL, содержащие эти ссылки, в свой проект. Если это системные библиотеки DLL, вы должны работать с правильными версиями ОС и .NET Framework.   -  person Robert Harvey    schedule 30.04.2013
comment
Это не имеет никакого смысла, я просто заявил, что нажатие кнопки «Добавить ссылки» в моем проекте библиотеки классов и поиск отсутствующих DLL не работает, поскольку их нет в разделе .net или COM. Они автоматически добавляются в проект ASP.net, но не в мою библиотеку классов. Также я использую VS2010 в Windows 7 с ASP.net MVC3.   -  person TheWebs    schedule 30.04.2013


Ответы (2)


Похоже, у вас не установлена ​​среда ASP.NET MVC. Если они у вас установлены, они должны отображаться в вашем GAC (глобальном кэше сборок), из которого ваш «обозреватель ссылок» извлекает свои библиотеки DLL. Вы можете получить доступ к gac через C:\Windows\Assembly.

person RiceRiceBaby    schedule 30.04.2013
comment
Я установил его, я использую его из VS2010, и я использовал Интернет, установленный из веб-матрицы, для установки ASP.net MVC. Я не знаю, как я мог бы создать и запустить проект MVC без установки. - person TheWebs; 30.04.2013
comment
У меня установлен ASP.net MVC3, согласно веб-установщику, но я не вижу DLL, таких как Web.security или web.MVC. - person TheWebs; 30.04.2013
comment
При установке ASP.NET MVC3 эти сборки должны были быть загружены в GAC (C:\Windows\Assembly). Пожалуйста, убедитесь, что они там. Если их нет в GAC, это означает, что во время установки что-то пошло не так, и вам следует попробовать удалить и переустановить MVC. - person RiceRiceBaby; 30.04.2013
comment
Есть ли подпапка в C:\Windows\Assembly\GAC, в которой они должны быть? если он не был установлен, что соответствует веб-установщику, как я смогу создать новый проект MVC3 в VS (2010)? - person TheWebs; 02.05.2013
comment
C:\Windows\Assembly — это GAC (глобальный кэш сборок). Если его нет в этой папке, значит что-то пошло не так во время установки. Я бы рекомендовал удалить MVC, загрузить файл MSI и использовать его для установки MVC во второй раз. - person RiceRiceBaby; 02.05.2013

Я работаю над проектом MVC3, и мы создали архитектуру нашего проекта для поддержки наших классов примерно так:

  1. Классы моделей находятся в своем месте по умолчанию в проекте MVC.
  2. Мы добавили новый проект Entity, который содержит свойство, соответствующее именам полей (столбцов) базы данных.
  3. Отдельный проект для DAL (доступ к данным позже) и BAL (уровень бизнес-доступа).

Теперь как все работает:

Классы моделей содержат свойства, которые отображают свойства в проекте Entity, а также некоторые дополнительные свойства, которые нам нужны во время нашей разработки в качестве вспомогательных свойств, например. SubmissionType, чтобы проверить, какой тип отправки мы сделали с помощью того же метода публикации, как «Сохранить», «Обновить» или «Удалить».

Проект Entity будет содержать только свойства, которые сопоставляют имена столбцов в базе данных, а BAL будет взаимодействовать с классами проекта Entity для получения или присвоения значений, которые требуют операции с базой данных.

И классы в проекте Entity будут получать или назначать значения в/из классов модели. Это все потому, что наш основной проект может иметь ссылку на проекты Entity и BAL, но не наоборот.

Хорошо, теперь вопрос в том, как будут выполняться эти сопоставления? Я имею в виду присвоение значений из класса Model в классы Entity и наоборот. Для этого нам нужно добавить dll в наш проект "Omu.ValueInjecter". который можно загрузить здесь. Просто нужно добавить его в наше приложение, и оно позаботится о сопоставлении вещей всего в одной строке, например:

      EmployeeEntities entity = new EmployeeEntities();
      entity.InjectFrom(model);

Здесь я присваиваю значение из модели сущности, которую я получил из почтового метода. Теперь этот объект сущности будет передан в BAL и из BAL в DAL. Внедрив это решение, вам даже не нужно перемещать свою модель из-за пределов вашего проекта, что, я думаю, является болезненным усилием.

Надеюсь, это решение поможет вам

person Jitender Kumar    schedule 01.05.2013