Ошибка генерации ScaffoldingConnectionFactory - PullRequest
2 голосов
/ 23 апреля 2011

У меня есть простой класс под названием Кандидат.Я пытаюсь добавить контроллер шаблона, используя Entity Framework с заявителем в качестве класса моей модели, и новый контекст данных.

Каждый раз, когда я пытаюсь создать контроллер, я получаю диалоговое окно с сообщением об ошибке «Unableполучить метаданные для «MyNameSpace.Models.Applicant». Произошла ошибка при генерации «ScaffoldingConnectionFactory». Попробуйте перестроить проект. "

Перестройка ничего не дает.

Вот мой класс модели:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace MyNameSpace.Models
{
    public class Applicant
    {
        public int ApplicantId { get; set; }
        [Required]
        public string FirstName { get; set; }
        [Required]
        public string LastName { get; set; }
        public string MiddleInitial { get; set; }
        [Required]
        public string Phone { get; set; }
        [Required]
        public string EmailAddress { get; set; }
        [Required]
        [DataType(DataType.Date)]
        public string DateOfBirth { get; set; }
        public virtual Ethnicity Ethnicity { get; set; }
        public virtual Race Race { get; set; }
    }

    public class Ethnicity 
    {
        public int EthnicityId { get; set; }
        public string Type { get; set; }
    }
    public class Race 
    {
        public int RaceId { get; set; }
        public string Type { get; set; }
    }
}

Я чувствую, что пропустил шаг, но не могу понять, как это сделать.

Ответы [ 11 ]

2 голосов
/ 01 июня 2011

У меня была такая же проблема, и я должен был исправить это аналогично.

Моя версия EF была несовместима с новым инструментарием MVC.После обновления EntityFramework из NuGet и нескольких обновлений устаревшего кода все работает нормально.

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

У меня была такая же проблема при добавлении нового контроллера в ASP.NET MVC 4, я решил эту проблему, переместив Database.SetInitializer(new SomeDataContextInitializer()); из конструктора DBContext в метод Application_Start в Global.asax.cs. Надеюсь, это поможет.

1 голос
/ 24 ноября 2011

У меня возникла эта проблема, когда я пытался создать контроллер с помощью диалогового окна «Добавить контроллер» и при выборе «Контроллер с действиями и представлениями чтения / записи, используя Entity Framework».

Генерирует код для класса Controller. Кстати, сюда входят ссылки на объект контекста EntityFramework (например, в моем случае для PersonController следующая строка: «Person person = db.People.Find (id);»). Это только для начальной точки, и, конечно, вы можете заменить автоматически сгенерированный код, если хотите. В любом случае, именно поэтому он запрашивает класс Context в диалоговом окне и почему он автоматически генерирует новый класс для вас, если потребуется.

Я ссылался на Entity Framework, используя Nuget, который имел эффект ссылки на EntityFramework.dll v4.0. Позже я абстрагировал код доступа к данным в другой проект, поэтому удалил EF через Nuget. Существовали некоторые существующие ссылки на DbSet <> в классе Context, и я думаю, что я, должно быть, решил это, заставив Resharper добавить ссылку, чтобы заставить проект просто заставить его скомпилировать / собрать. R # добавил ссылку на System.Data.Entity из библиотеки .Net 4 Framework. Именно на этом этапе я начал получать сообщение об ошибке при попытке создать новые контроллеры с помощью шаблона «Контроллер с действиями и представлениями чтения / записи, используя Entity Framework».

Я решил это путем (1) удаления всех ссылок на System.Data.Entity; (2) установка Entity Framework через Nuget и перестройка; (3) Создание контроллера (ов); (4) удаление EF через Nuget, удаление автоматически сгенерированного класса Context и замена автоматически сгенерированного кода в контроллере на мой собственный, который ссылался на мои классы из моего проекта / сборки DAL.

1 голос
/ 13 сентября 2011

Была такая же проблема. Проблема в том, что контекст находится в отдельной сборке.

    namespace WebJhs179.Models {

        /// <summary>
        /// This class is just wrapper to actual context. Because actual context is in separate assembly, 
        /// MVC3's controller creation fails. 
        /// Workaround: Create empty class and inherit actual context.
        /// </summary>
        public class Jhs179Context : Jhs179.Jhs179DbContext {
        }
    }
1 голос
/ 24 августа 2011

Я только что столкнулся с этой проблемой, и затем я понял, что мне нужно выбрать правильный пакет NuGet, чтобы избежать этой проблемы.В списке пакетов NuGet есть два очень знакомых пакета.

  1. EFCodeFirst.SqlServerCompact используется с Entity Framework Feature CTP5.
  2. EntityFramework.SqlServerCompact используется с Entity Framework 4.1.

«EntityFramework.SqlServerCompact» следует использовать, если вы используете Entity Framework 4.1 !!

1 голос
/ 03 мая 2011

У меня была такая же проблема. Попробовал переустановить EntityFramework с помощью NuGet.

Ничего не исправил.

Я собираюсь сделать залог и попробовать использовать Linq.

Я думал, что раньше это работало !!

http://www.asp.net/mvc/tutorials/creating-model-classes-with-linq-to-sql-cs

Иногда кажется, что стек MS постоянно меняется настолько, что ненадежен. Вот почему люди используют Linq?

РЕДАКТИРОВАТЬ: Запуск установщика веб-платформы в MS Visual веб-дизайнер исправил эту проблему.

1 голос
/ 23 апреля 2011

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

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

Я пытался использовать MVC 4 и Entity Framework 6. Наконец, я понял, что MVC4 по умолчанию ссылается на DLL EF5, удаляет и устанавливает EF6.Мне пришло сообщение:

MVC Scaffolding does not support Entity Framework 6 or later. For more information please visit: [http://go.microsoft.com/fwlink/?LinkId=276833][1]

Решение было использовать вместо этого MVC 5, поскольку я уже написал код EF6, и приложение MVC было новым.

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

В моем случае классы .edmx и model были в отдельной сборке.Это не было проблемой, так как я смог заставить леса работать правильно, просто удалив частичный класс, который я использовал для расширения сгенерированного класса DbContext.

0 голосов
/ 13 июня 2012

У меня была такая же проблема при использовании EF 4.3.1.В моем случае это было потому, что я добавил дополнительную функциональность к сгенерированному DbContext, используя частичный класс.Когда я удалил этот класс из модельного проекта, леса работали правильно.

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