#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. Это работает отлично! Полдня из-за этого утомительно. Большое вам спасибо.