MVC3 - Ошибка при настройке контроллера с Entity Framework - PullRequest
4 голосов
/ 20 июня 2011

Шаги, которые я выполняю ...

  • Добавить новую модель данных сущности ADO.NET> Создать из БД> Установить новую строку подключения к adventureworks db>Далее> Выберите таблицу «DatabaseLog»> Готово.Убедитесь, что DatabaseLog виден в представлении edmx.

  • Контроллер правой кнопкой мыши> Добавить контроллер

  • ШаблонКонтроллер с действиями чтения и записи и представлениями, используя Entity

  • Класс моделиAdventureWorksDWEntities

  • ContextНовые данные Контекст> Принять имя по умолчанию

  • ПросмотрБритва

  • Нажмите Добавить.

Произошла ошибка: "Невозможно получить метаданные для« DatabaseDocumentor.models.AdventureWorksDWEntities ».

  • System.Data.Edm.EdmEntityeType: EntityType« AdventureWorksDWEntities »не имеет ключевой тип, определенный для этого ключевого объекта. Определите ключ этого типа для определения.

  • System.Data.Edm.EdmEntitySet: EntityType: EntitySet 'AdventureWorksDWEntities' основан на типе 'AdventureWorksDWEntities', для которого не определены ключи.

Я попробовал снова, используя AdventureWorks (не AdventureWorksDW), и на этот раз это сработало.Но я до сих пор не понимаю, что выбрать при создании контроллера.У меня есть 3 варианта:

ШаблонЗдесь я выбрал Controller с действиями чтения и записи и представлениями, используя Entity.Это достаточно легко понять.Я хочу, чтобы мои таблицы генерировались для меня, поэтому я выбираю эту опцию.

МодельЭто то, что я хочу моделировать.В этом случае я хочу смоделировать таблицу «Отдел».Поэтому я выбираю Отдел.

КонтекстЭто очень размыто для меня.Я выбрал * Имя * Сущности.Это значение в области строк подключения web.config.Почему мне нужно выбрать строку подключения в качестве контекста?Я знаю контекст только как «объект, который я использую, чтобы добраться до моих сущностей» в C #.Итак, здесь мне сложно представить.Нужно ли мне всегда выбирать строку подключения для контекста?

Ответы [ 4 ]

3 голосов
/ 20 июня 2011

Эта проблема может возникнуть, если контекст не выбран правильно из раскрывающегося списка. Контекст должен быть значением, хранящимся в web.config

<add name="NamedEntitiesCs1"

, который также содержит модель, которую вы хотите сгенерировать.

2 голосов
/ 21 июля 2011

Я нашел, в чем проблема ...

У меня есть трехуровневая архитектура, которую я использую с каждым из следующих проектов в одном решении.

1.YeagerTech 2.YeagerTechWcfService 3.YeagerTechModel

Независимо от того, что, хотя моя служба wcf ссылается на мою модель, стартовый проект (1) недостаточно интеллектуален, чтобы распознавать метаданные для создания контроллера. В этом случае вы должны включить ссылку на ваш проект, которая включает вашу модель edmx.

Необходимо также убедиться, что строка подключения также находится в стартовом проекте (1) через файл web.config, чтобы получить соединение для метаданных.

1 голос
/ 10 мая 2012

Я нашел ответ, у класса модели должен быть ключ, то есть свойство ID, т.е. public int ID {get; задавать;} сохранить изменения и построить или перестроить решение. Это должно быть в состоянии работать.

0 голосов
/ 24 июля 2012

Ваша собственность в вашей Модели для удостоверения личности должна быть объявлена ​​общедоступной.перестройте и попробуйте снова, должно работать

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