MVC4 — значение не может быть нулевым. Имя параметра: источник

#c# #asp.net-mvc #asp.net-mvc-4

#c# #asp.net-mvc #asp.net-mvc-4

Вопрос:

Я создаю новый проект в MVC4. Я получаю эту ошибку: System.ArgumentNullException: Value can not be null.
Parameter name: source.
База данных существует, таблица существует и заполнена данными.

Какие-нибудь советы?

Контроллер ShopController.cs

 ...  
    SQLEntities DB = new SQLEntities();  

    public ActionResult Index()
    {
        var x = DB.Types.ToList();          <-Here I get an exception
        return View(x);
    }
...
  

Тип модели.cs

 using System.Collections.Generic;

namespace xxx.Models
{
    public class Type
    {
        public int TypeId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}
  

Модель SQLEntities.cs

 using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace xxx.Models
{
    public class SQLEntities
    {
        public DbSet<Type> Types { get; set; }
    }
}
  

Web.config

   <connectionStrings>
    <add name="SQLEntities" connectionString="Data Source=KOMPUTERSQLEXPRESS;Initial Catalog=myDB;Integrated Security=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>
  

Компилятор не указывает на какую-либо ошибку. Это было только тогда, когда он хотел перейти к mypage/Shop получению исключения.

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

 {System.ArgumentNullException: Value can not be null.
Parameter name: source.
       w System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       w Print.Controllers.StoreController.Index() w c:UsersJohnDocumentsVisual Studio 2013ProjectsPrintPrintControllersStoreController.cs:wiersz 18
       w lambda_method(Closure , ControllerBase , Object[] )
       w System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       w System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       w System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       w System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41()
       w System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
       w System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
       w System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
       w System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33()
       w System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49()}
  

Комментарии:

1. Где именно вы получаете это исключение? Пожалуйста, укажите трассировку стека.

2. Вы не добавили много информации — пожалуйста, добавьте полную трассировку стека.

3. Не могли бы вы предоставить полный класс SQLEntities, пожалуйста?

4. Извините, я скопировал не с того места.

Ответ №1:

Ваша проблема в том, что SQLEntities должно наследовать от DbContext .

Ваша проблема в том, что SQLEntities.Types явно равно нулю. Вам не нужно инициализировать это свойство, поскольку EntityFramework сделает это автоматически, когда все настроено правильно.

Измените свой код на:

    public class SQLEntities: DbContext
   {
       public DbSet<Type> Types { get; set; }
   }
  

Комментарии:

1. Это работает отлично! Полдня из-за этого утомительно. Большое вам спасибо.