satyanand mishra Ответов: 1

При выполнении определения команды произошла ошибка. Подробнее см. Внутреннее исключение. В MVC4 с


HomeContext homecontext = new HomeContext();
            homecontext.Database.Connection.Open();
          Home hom=  homecontext.home.Single(emp => emp.EmployeeId == 1);
            return View(hom);


Что я уже пробовал:

Я хочу получить данные из базы данных на просмотр с помощью entity framework, но это дает некоторую ошибку, например("
An error occurred while executing the command definition. See the inner exception for details. 
")
Пожалуйста кто нибудь помогите мне
Спасибо

Thomas.D Williams

Вы используете рамки сущности? Является ли "home" свойством DbSet в вашем HomeContext? Обычно вам не нужно было бы вызывать базу данных.Соединение.Open() в EF он обрабатывается автоматически, когда он вводится в ваш контроллер.

Dave Kreskowiak

Итак, что же говорит свойство InnerException исключения, на которое вы смотрите?

satyanand mishra

Вы совершенно правы сэр я использую Entity framework но когда я запускаю этот код:{
HomeContext homecontext = новый HomeContext();
Дома Хом= homecontext.дома.Single(emp => emp.EmployeeId == 1);
смотреть возвращение(Хом);}
и мой пример кода
{
общественности в dbset&ЛТ;домой&ГТ; дома { получить; набор; }
}
и
{[Таблица("std")]
открытый класс Главная
{
[Ключ]
public int EmployeeId { get; set; }
public string Name { get; set; }
public string City { get; set; }
общественного строка пол { получить; набор; }
}
а посмотреть код можно так
{


EmployeeId:- @Model.столбец EmployeeID
Name:-@Model.Name
City:-@Model.City
Gender:-@Model.Пол


}
и моя строка подключения такова
{
<соединительные нити>
&ЛТ;добавить имя="HomeContext" свойства connectionString= "сервер=\Сатья сидел;базы данных=студент; Комплексная безопасность=SSPI;" имя_поставщика="системы.Данных.В sqlclient"/&ГТ;


}
и
{
этот код в файле global.asax
охраняемых недействительными событий Application_Start()
{
Районная регистрация.RegisterAllAreas();
База данных.SetInitializer<mvcapplication7.models.homecontext>(null);
WebApiConfig.Регистр(GlobalConfiguration.Конфигурация);
FilterConfig.RegisterGlobalFilters(Глобалфильтры.Фильтры);
RouteConfig.RegisterRoutes(RouteTable.Маршруты);
}
}
Это дает исключение вроде
{При выполнении определения команды произошла ошибка. Подробнее см. Внутреннее исключение.}
{
Ошибка сервера в приложении'/'.
Элемент модели, передаваемый в словарь, имеет тип "System.Data.Entity.Core.EntityCommandExecutionException", но для этого словаря требуется элемент модели типа " MvcApplication7.Модели.Домой".
Описание: необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения Об Исключении: Система.InvalidOperationException: элемент модели, переданный в словарь, имеет тип "System.Data.Entity.Core.EntityCommandExecutionException", но для этого словаря требуется элемент модели типа " MvcApplication7.Модели.Домой".

Ошибка Источника:

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

трассировка стека:


[InvalidOperationException: элемент модели, переданный в словарь, имеет тип "System.Data.Entity.Core.EntityCommandExecutionException", но для этого словаря требуется элемент модели типа " MvcApplication7.Модели.Домой".]
System.Web.Mvc.ViewDataDictionary`1.SetModel(значение объекта) +378
System.Web.Mvc.ViewDataDictionary.set_Model(значение объекта) +47
Системы.Веб.В MVC.Экземпляр класса viewdatadictionary..чтор(экземпляр класса viewdatadictionary словарь) +614
Системы.Веб.В MVC.Экземпляр класса viewdatadictionary`1..чтор(экземпляр класса viewdatadictionary экземпляр класса viewdatadictionary) +37
System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData) +98
System.Web.Mvc.WebViewPage.set_ViewData(значение ViewDataDictionary) +38
System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, экземпляр объекта) +425
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +382
Системы.Веб.В MVC.ViewResultBase.ExecuteResult(ControllerContext context) +431
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +39
System.Web.Mvc.<>c__DisplayClass1a.<invokeactionresultwithfilters>b__17() +74
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(фильтр IResultFilter, ResultExecutingContext preContext, продолжение Func`1) +388
System.Web.Mvc.<>c__DisplayClass1c.<invokeactionresultwithfilters>b__19() +72
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, фильтры IList`1, ActionResult actionResult

1 Ответов

Рейтинг:
0

Dave Kreskowiak

C# чувствителен к регистру!

На линии в dbset, вы должны рассказать в dbset, к какому типу он идет в магазин. Этот тип - "дом", потому что это то, что вы назвали своим домашним классом, а не "домом".

public DbSet<home> home { get; set; }

должно быть
public DbSet<Home> home { get; set; }

Видите разницу?


satyanand mishra

Я исправляю его но получаю все то же исключение

Dave Kreskowiak

Как выглядит полный код Razor для представления, которое вы пытаетесь использовать?

satyanand mishra

Код HomeController-это=>
----------------------------------------------------------
использование системы;
использование системы.Коллекции.Общий;
использование System.Linq;
использование системы.Сеть;
использование System.Web.Mvc;
использование MvcApplication7.Модели;
пространство имен MvcApplication7.Контроллеры
{
публичный класс HomeController : контроллер
{
//
// добраться до дома/

индекс общественного ActionResult ()
{
пробовать
{
HomeContext homecontext = новый HomeContext();

Home home1 = homecontext.home.Single(emp => emp.EmployeeId == 1);
смотреть возвращение(home1);
}
поймать (исключение бывший)
{
смотреть возвращение(экс);
}
}

}
}
--------------------типовой кодекс--------
Первая Модель-Это Home.cd----------------
использование системы;
использование системы.Коллекции.Общий;
использование System.Linq;
использование системы.Сеть;
использование системы.ComponentModel.DataAnnotations.Схема;
использование системы.ComponentModel.DataAnnotations;
пространство имен MvcApplication7.Модели
{
[Таблица("tblHome")]
открытый класс Главная
{
[Ключ]
public int EmployeeId { get; set; }
public string Name { get; set; }
public string City { get; set; }
общественного строка пол { получить; набор; }
}
}
---------------------Вторая модель - HomeContext.cs-----------
использование системы;
использование системы.Коллекции.Общий;
использование System.Linq;
использование системы.Сеть;
использование System.Data.Entity;

пространство имен MvcApplication7.Модели
{
открытый класс HomeContext:DbContext
{
общественности в dbset&ЛТ;домой&ГТ; дома { получить; набор; }

}
----------------И на мой взгляд код-----------------
@модель MvcApplication7.Модели.Домой

@{
Layout = null;
}

<!DOCTYPE html>



в <мета имя="область просмотра" содержимого="ширина=устройство-ширина" /&ГТ;
<title>индекс



EmployeeId:- @Model.столбец EmployeeID
Name:-@Model.Name
City:-@Model.City
Gender:-@Model.Пол



------И Моя Строка Подключения-------------
<соединительные нити>
&ЛТ;добавить имя="HomeContext" свойства connectionString= "сервер=\Сатья сидел;базы данных=сотрудник; Комплексная безопасность=SSPI;" имя_поставщика="системы.Данных.В sqlclient"/&ГТ;


И еще -----------код файла GlobalFile.asax.cs таков---------------------
охраняемых недействительными событий Application_Start()
{
Районная регистрация.RegisterAllAreas();
База данных.SetInitializer<mvcapplication7.models.homecontext>(null);
WebApiConfig.Регистр(GlobalConfiguration.Конфигурация);
FilterConfig.RegisterGlobalFilters(Глобалфильтры.Фильтры);
RouteConfig.RegisterRoutes(RouteTable.Маршруты);
}
Я хочу получить данные из базы данных на просмотр
но это как бы исключение из правил
------------------------------------------------------------------
Ошибка сервера в приложении '/MvcApplication7'.
Элемент модели, передаваемый в словарь, имеет тип "System.Data.Entity.Core.EntityException", но для этого словаря требуется элемент модели типа " MvcApplication7.Модели.Домой".
Описание: необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения Об Исключении: Система.InvalidOperationException: элемент модели, переданный в словарь, имеет тип "System.Data.Entity.Core.EntityException", но для этого словаря требуется элемент модели типа " MvcApplication7.Модели.Домой".

Ошибка Источника:

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

трассировка стека:


[InvalidOperationException: элемент модели, переданный в словарь, имеет тип "System.Data.Entity.Core.EntityException", но для этого словаря требуется элемент модели типа " MvcApplication7.Модели

Dave Kreskowiak

В вашем коде контроллера есть блок try/catch. В блоке catch вы возвращаете начальное представление по умолчанию, но передаете исключение. Представление ожидает домашний экземпляр, но вы даете ему экземпляр исключения. Вы должны вернуть другое представление, если собираетесь передать исключение, которое ожидает экземпляр исключения.

Чтобы выяснить, почему код EF терпит неудачу, поставьте точку останова в строке "return View(ex);" и запустите код. Когда он терпит неудачу, он останавливается в точке останова, а затем вы можете посмотреть на переменную ex в отладчике и изучить исключение и внутреннее исключение внутри него для получения дополнительной информации о том, почему запрос терпит неудачу. Скорее всего, у вас нет ничего, что имеет employeeId 1.

satyanand mishra

Большое вам спасибо, сэр, за то, что вы дали мне предложение, наконец-то я решу эту проблему.