Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 空引用ASP.Net MVC实体_C#_Asp.net Mvc 3_Entity_Datacontext - Fatal编程技术网

C# 空引用ASP.Net MVC实体

C# 空引用ASP.Net MVC实体,c#,asp.net-mvc-3,entity,datacontext,C#,Asp.net Mvc 3,Entity,Datacontext,在这一行_repository.CreateDealer(d); 我得到下面的错误 我已经开始根据本教程的基础知识编写代码 IdealRepository.cs public void CreateDealer(DealersTemp.DealerHolder dealer) { using (DealerContext context = new DealerContext()) { context.Entry(new DealersTemp.Deal

在这一行_repository.CreateDealer(d); 我得到下面的错误

我已经开始根据本教程的基础知识编写代码

IdealRepository.cs

    public void CreateDealer(DealersTemp.DealerHolder dealer)
{
    using (DealerContext context = new DealerContext())
    {
        context.Entry(new DealersTemp.DealerHolder
        {
            //DealerHolderId = dealer.DealerHolderId,
            id = dealer.id,
            locationId = dealer.locationId,
            address = dealer.address,
            name = dealer.name,
            logicalName = dealer.logicalName,
            type = dealer.type,
            make = dealer.make,
            operations = dealer.operations,
            contactinfo = dealer.contactinfo,
            publishDate = dealer.publishDate,
            active = dealer.active,
            syncPublishDate = dealer.syncPublishDate
        }).State = System.Data.EntityState.Added;
        context.SaveChanges();
    }
}
    namespace DealerTentSaleMVC.Repository
{
    public interface IDealerRepository
    {
        IEnumerable<DealersTemp.DealerHolder> GetAllDealers();
        void CreateDealer(DealersTemp.DealerHolder dealer);
        DealersTemp.DealerHolder ReadDealer(int id);
        void UpdateDealer(DealersTemp.DealerHolder dealer);
        void DeleteDealer(int id);
    }

}
下面是显示整个控制器代码的更新

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Objects.DataClasses;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DealerTentSaleMVC.Models;
using System.Net;
using System.Runtime.Serialization.Json;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.IO;
using DealerTentSaleMVC.Repository;

namespace DealerTentSaleMVC.Controllers
{
    public class EdmundsController : Controller
    {
        private static string GetApiKey() { return "AIzaSyDiOm4qmnR7ZPbPPiUJrIxfYZ0XreDMaW8"; }

        private DealersTemp.RootObject db = new DealersTemp.RootObject();
        private IDealerRepository _repository;
        //
        // GET: /Edmunds/

        public ViewResult Index()
        {
            return View(_repository.GetAllDealers());
        }

        //
        // GET: /Edmunds/Details/5

        public ViewResult Details(int id)
        {
            DealersTemp.DealerHolder dealerholder = _repository.ReadDealer(id);

            return View(dealerholder);
        }

        //
        // GET: /Edmunds/Create

        public ActionResult Create()
        {
            return View();
        }

        //
        // POST: /Edmunds/Create
        public class Result
        {
            public ICollection<DealersTemp.DealerHolder>DealerHolder { get; set; }
        }
        //[HttpPost]
        //public ActionResult Create(BlogPost blogpost)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        _repository.CreateBlogPost(blogpost);
        //        return RedirectToAction("Index");
        //    }

        //    return View(blogpost);
        //}
        [HttpPost]
        public ActionResult Create(string zip, string make)
        {
            string url = "http://api.edmunds.com/v1/api/dealer?zipcode=" + zip.Replace(" ", "") + "&makeName=" + make.Replace(" ", "") + "&radius=3000&fmt=json&api_key=8rqtk3bb4bc4xgydqspvmc2s";
            //WebRequest request = WebRequest.Create(url);
            WebClient wc = new WebClient();
            string stws = wc.DownloadString(url);

            JToken root = JObject.Parse(stws);
            JToken dealerholder = root["dealerHolder"];
            DealerTentSaleMVC.Models.DealersTemp.DealerHolder convertedProducts = new DealerTentSaleMVC.Models.DealersTemp.DealerHolder();
            string dh = dealerholder.ToString().Replace("[", "").Replace("]", "");
            Result result = JsonConvert.DeserializeObject<Result>(stws); 


            foreach (var d in result.DealerHolder)
            {
                DealersTemp.DealerHolder newD = new DealersTemp.DealerHolder { active=d.active, contactinfo=d.contactinfo, address=d.address, id=d.id, locationId=d.locationId, logicalName=d.logicalName, make=d.make, name=d.name, operations=d.operations, publishDate=d.publishDate, syncPublishDate=d.syncPublishDate, type=d.type };


                _repository.CreateDealer(d);
            }
            //DataContractJsonSerializer jsonSerializer =
            //        new DataContractJsonSerializer(typeof(DealersTemp.RootObject));
            //DealersTemp.RootObject products = (DealersTemp.RootObject)jsonSerializer.ReadObject(ws.GetResponseStream());
            //List<DealersTemp.DealerHolder> convertProducts = (DealersTemp.DealerHolder)products.dealerHolder;


            return RedirectToAction("Index");
        }

        //
        // GET: /Edmunds/Edit/5

        public ActionResult Edit(int id)
        {
            DealersTemp.DealerHolder dealer = _repository.ReadDealer(id);

            return View(dealer);
        }

        //
        // POST: /Edmunds/Edit/5

        [HttpPost]
        public ActionResult Edit(DealerTentSaleMVC.Models.DealersTemp.DealerHolder dealerholder)
        {
            if (ModelState.IsValid)
            {
                _repository.UpdateDealer(dealerholder);

                return RedirectToAction("Index");
            }
            return View(dealerholder);
        }

        //
        // GET: /Edmunds/Delete/5

        public ActionResult Delete(int id)
        {
            DealersTemp.DealerHolder dealer = _repository.ReadDealer(id);
            return View(dealer);
        }

        //
        // POST: /Edmunds/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            _repository.DeleteDealer(id);
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统数据;
使用System.Data.Objects.DataClass;
使用System.Data.Entity;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用DealerTentSaleMVC.Models;
Net系统;
使用System.Runtime.Serialization.Json;
使用Newtonsoft.Json;
使用Newtonsoft.Json.Linq;
使用System.IO;
使用DealerTentSaleMVC.Repository;
命名空间DealerTentSaleMVC.Controllers
{
公共类EdmundsController:控制器
{
私有静态字符串GetApiKey(){返回“AIzaSyDiOm4qmnR7ZPbPPiUJrIxfYZ0XreDMaW8”}
private DealersTemp.RootObject db=new DealersTemp.RootObject();

私人理想存储库; // //获取:/Edmunds/ 公共视图结果索引() { 返回视图(_repository.GetAllDealers()); } // //获取:/Edmunds/Details/5 公共视图结果详细信息(int id) { DealerTemp.DealerHolder=\u repository.ReadDealer(id); 返回视图(dealerholder); } // //获取:/Edmunds/Create 公共操作结果创建() { 返回视图(); } // //POST:/Edmunds/Create 公开课成绩 { 公共ICollectionDealerHolder{get;set;} } //[HttpPost] //公共操作结果创建(BlogPost BlogPost) //{ //if(ModelState.IsValid) // { //_repository.CreateBlogPost(blogpost); //返回操作(“索引”); // } //返回视图(blogpost); //} [HttpPost] 公共操作结果创建(字符串压缩、字符串生成) { 字符串url=”http://api.edmunds.com/v1/api/dealer?zipcode=“+zip.Replace(“,”)+“&makeName=“+make.Replace(“,”)+”&radius=3000&fmt=json&api_key=8rqtk3bb4bc4xgydqspvmc2s”; //WebRequest=WebRequest.Create(url); WebClient wc=新的WebClient(); 字符串stws=wc.DownloadString(url); JToken root=JObject.Parse(stws); JToken dealerholder=根[“dealerholder”]; DealerTentSaleMVC.Models.DealersTemp.DealerHolder convertedProducts=new DealerTentSaleMVC.Models.DealersTemp.DealerHolder(); 字符串dh=dealerholder.ToString().Replace(“[”,”).Replace(“]”,”); 结果=JsonConvert.DeserializeObject(stws); foreach(result.DealerHolder中的变量d) { DealerTemp.DealerHolder newD=new DealerTemp.DealerHolder{active=d.active,contactinfo=d.contactinfo,address=d.address,id=d.id,locationId=d.locationId,logicalName=d.logicalName,make=d.make,name=d.name,operations=d.operations,publishDate=d.publishDate,syncPublishDate=d.syncPublishDate,type=d.type}; _储存库.CreateDealer(d); } //DataContractJsonSerializer jsonSerializer= //新的DataContractJsonSerializer(typeof(DealersTemp.RootObject)); //DealersTemp.RootObject产品=(DealersTemp.RootObject)jsonSerializer.ReadObject(ws.GetResponseStream()); //列出convertProducts=(DealerTemp.DealerHolder)products.DealerHolder; 返回操作(“索引”); } // //获取:/Edmunds/Edit/5 公共操作结果编辑(int id) { DealerTemp.DealerHolder dealer=\u repository.ReadDealer(id); 返回视图(经销商); } // //POST:/Edmunds/Edit/5 [HttpPost] 公共操作结果编辑(DealerTentSaleMVC.Models.DealerTemp.DealerHolder DealerHolder) { if(ModelState.IsValid) { _repository.updateAler(dealerholder); 返回操作(“索引”); } 返回视图(dealerholder); } // //获取:/Edmunds/Delete/5 公共操作结果删除(int id) { DealerTemp.DealerHolder dealer=\u repository.ReadDealer(id); 返回视图(经销商); } // //POST:/Edmunds/Delete/5 [HttpPost,ActionName(“删除”)] 公共行动结果删除已确认(内部id) { _repository.DeleteDealer(id); 返回操作(“索引”); } 受保护的覆盖无效处置(布尔处置) { 基地。处置(处置); } } }
您没有显示所有控制器代码或注册,因此我最好的猜测是您没有正确注册依赖项,并且存储库为空。由于缺少代码,很难分辨。您是否确保
\u repository
d
不为空?private idealrepository\u repository;我刚刚更新了整个控制器,我调试的代码为NOTNULL,它显示为NOTNULL
    namespace DealerTentSaleMVC.Models
{
    public class DealersTemp
    {
        public class Address
        {
            //public int AddressId { get; set; }
            public string street { get; set; }
            public string apartment { get; set; }
            public string city { get; set; }
            public string stateCode { get; set; }
            public string stateName { get; set; }
            public string county { get; set; }
            public string country { get; set; }
            public string zipcode { get; set; }
            public double latitude { get; set; }
            public double longitude { get; set; }
            //public virtual int DealerHolderId { get; set; }
        }

        public class Operations
        {
            //public int OperationsId { get; set; }
            public string Wednesday { get; set; }
            public string Tuesday { get; set; }
            public string Thursday { get; set; }
            public string Saturday { get; set; }
            public string Friday { get; set; }
            public string Monday { get; set; }
            public string Sunday { get; set; }
            //public virtual int DealerHolderId { get; set; }
        }

        public class Contactinfo
        {
            //[Key]
            //public int ContactinfoId { get; set; }

            public string dealer_website { get; set; }
            public string email_address { get; set; }
            public string phone { get; set; }
            //public string phone_areacode { get; set; }
            //public string phone_postfix { get; set; }
            //public string phone_prefix { get; set; }
            //public virtual int DealerHolderId { get; set; }
        }

        public class DealerHolder
        {
            //[Key]
            //public int DealerHolderId { get; set; }
            public string id { get; set; }
            public string locationId { get; set; }
            public Address address { get; set; }
            public string name { get; set; }
            public string logicalName { get; set; }
            public string type { get; set; }
            public string make { get; set; }
            public Operations operations { get; set; }
            public Contactinfo contactinfo { get; set; }
            public string publishDate { get; set; }
            public bool active { get; set; }
            public string syncPublishDate { get; set; }

            public DealersTemp.DealerHolder ToDomainDealer()
            {
                return new DealersTemp.DealerHolder
                {
                    //DealerHolderId = this.DealerHolderId,
                    id = this.id,
                    locationId = this.locationId,
                    address = this.address,
                    name = this.name,
                    logicalName = this.logicalName,
                    type = this.type,
                    make = this.make,
                    operations = this.operations,
                    contactinfo = this.contactinfo,
                    publishDate = this.publishDate,
                    active = this.active,
                    syncPublishDate = this.syncPublishDate

                };
            }
        }

        public class RootObject
        {
            public List<DealerHolder> dealerHolder { get; set; }
        }


    }
    [HttpPost]
public ActionResult Create(string zip, string make)
{
    string url = "http://api.edmunds.com/v1/api/dealer?zipcode=" + zip.Replace(" ", "") + "&makeName=" + make.Replace(" ", "") + "&radius=3000&fmt=json&api_key=SomeKey";
    //WebRequest request = WebRequest.Create(url);
    WebClient wc = new WebClient();
    string stws = wc.DownloadString(url);

    JToken root = JObject.Parse(stws);
    JToken dealerholder = root["dealerHolder"];
    DealerTentSaleMVC.Models.DealersTemp.DealerHolder convertedProducts = new DealerTentSaleMVC.Models.DealersTemp.DealerHolder();
    string dh = dealerholder.ToString().Replace("[", "").Replace("]", "");
    Result result = JsonConvert.DeserializeObject<Result>(stws); 


    foreach (DealersTemp.DealerHolder d in result.DealerHolder)
    {

        _repository.CreateDealer(d);
    }


    return RedirectToAction("Index");
}
    namespace DealerTentSaleMVC.Context
{
    public class DealerContext: DbContext
    {
        public DbSet<DealersTemp.DealerHolder> Dealers { get; set; }
    }
}
    {
    "dealerHolder": [
        {
            "id": "31711",
            "locationId": "3730",
            "address": {
                "street": "24825 US Hwy 19 N",
                "apartment": "",
                "city": "Clearwater",
                "stateCode": "FL",
                "stateName": "Florida",
                "county": "Pinellas",
                "country": "USA",
                "zipcode": "33763",
                "latitude": 27.99785,
                "longitude": -82.729321
            },
            "name": "Countryside Ford of Clearwater",
            "logicalName": "CountrysideFordofClearwater",
            "type": "ROOFTOP",
            "make": "Ford",
            "operations": {
                "Wednesday": "8:30 AM-9:00 PM",
                "Tuesday": "8:30 AM-9:00 PM",
                "Thursday": "8:30 AM-9:00 PM",
                "Saturday": "8:30 AM-8:00 PM",
                "Friday": "8:30 AM-9:00 PM",
                "Monday": "8:30 AM-9:00 PM",
                "Sunday": "11:00 AM-5:00 PM"
            },
            "contactinfo": {
                "dealer_website": "http://www.clearwaterford.com/",
                "email_address": "",
                "phone": ""
            },
            "publishDate": "2012-05-25",
            "active": true,
            "syncPublishDate": "2012-05-25"
        },
        {
            "id": "31673",
            "locationId": "3708",
            "address": {
                "street": "2525 34th St N",
                "apartment": "",
                "city": "Saint Petersburg",
                "stateCode": "FL",
                "stateName": "Florida",
                "county": "Pinellas",
                "country": "USA",
                "zipcode": "33713",
                "latitude": 27.794484,
                "longitude": -82.679411
            },
            "name": "Autoway Ford of St Petersburg",
            "logicalName": "AutowayFordofStPetersburg",
            "type": "ROOFTOP",
            "make": "Ford",
            "operations": {
                "Wednesday": "08:30 AM-08:00 PM",
                "Tuesday": "08:30 AM-08:00 PM",
                "Thursday": "08:30 AM-08:00 PM",
                "Saturday": "09:00 AM-06:00 PM",
                "Friday": "08:30 AM-08:00 PM",
                "Monday": "08:30 AM-08:00 PM",
                "Sunday": "12:00 PM-05:00 PM"
            },
            "contactinfo": {
                "dealer_website": "http://www.autowayford.net/",
                "email_address": "",
                "phone": ""
            },
            "publishDate": "2012-05-25",
            "active": true,
            "syncPublishDate": "2012-05-25"
        },
        {
            "id": "31636",
            "locationId": "3684",
            "address": {
                "street": "5815 N Dale Mabry Hwy",
                "apartment": "",
                "city": "Tampa",
                "stateCode": "FL",
                "stateName": "Florida",
                "county": "Hillsborough",
                "country": "USA",
                "zipcode": "33614",
                "latitude": 28.00016,
                "longitude": -82.505206
            },
            "name": "Bill Currie Ford",
            "logicalName": "BillCurrieFord",
            "type": "ROOFTOP",
            "make": "Ford",
            "operations": {
                "Wednesday": "8:00 AM-9:00 PM",
                "Tuesday": "8:00 AM-9:00 PM",
                "Thursday": "8:00 AM-9:00 PM",
                "Saturday": "8:00 AM-8:00 PM",
                "Friday": "8:00 AM-9:00 PM",
                "Monday": "8:00 AM-9:00 PM",
                "Sunday": "11:00 AM-6:00 PM"
            },
            "contactinfo": {
                "dealer_website": "http://billcurriedirect.dealerconnection.com/",
                "email_address": "",
                "phone_areacode": "888",
                "phone_postfix": "1156",
                "phone_prefix": "255",
                "phone": "8882551156"
            },
            "publishDate": "2012-05-25",
            "active": true,
            "syncPublishDate": "2012-05-25"
        },
        {
            "id": "31723",
            "locationId": "3739",
            "address": {
                "street": "17556 US 19 N",
                "apartment": "",
                "city": "Clearwater",
                "stateCode": "FL",
                "stateName": "Florida",
                "county": "Pinellas",
                "country": "USA",
                "zipcode": "33764",
                "latitude": 27.93164,
                "longitude": -82.730647
            },
            "name": "Walker Ford",
            "logicalName": "WalkerFord",
            "type": "ROOFTOP",
            "make": "Ford",
            "operations": {
                "Wednesday": "8:30 AM-8:00 PM",
                "Tuesday": "8:30 AM-8:00 PM",
                "Thursday": "8:30 AM-8:00 PM",
                "Saturday": "8:30 AM-6:00 PM",
                "Friday": "8:30 AM-8:00 PM",
                "Monday": "8:30 AM-8:00 PM",
                "Sunday": "11:30 AM-6:00 PM"
            },
            "contactinfo": {
                "dealer_website": "http://www.walkerford.com/",
                "email_address": "",
                "phone_areacode": "727",
                "phone_postfix": "3673",
                "phone_prefix": "535",
                "phone": "7275353673"
            },
            "publishDate": "2012-05-25",
            "active": true,
            "syncPublishDate": "2012-05-25"
        }
    ]
}
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Objects.DataClasses;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DealerTentSaleMVC.Models;
using System.Net;
using System.Runtime.Serialization.Json;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.IO;
using DealerTentSaleMVC.Repository;

namespace DealerTentSaleMVC.Controllers
{
    public class EdmundsController : Controller
    {
        private static string GetApiKey() { return "AIzaSyDiOm4qmnR7ZPbPPiUJrIxfYZ0XreDMaW8"; }

        private DealersTemp.RootObject db = new DealersTemp.RootObject();
        private IDealerRepository _repository;
        //
        // GET: /Edmunds/

        public ViewResult Index()
        {
            return View(_repository.GetAllDealers());
        }

        //
        // GET: /Edmunds/Details/5

        public ViewResult Details(int id)
        {
            DealersTemp.DealerHolder dealerholder = _repository.ReadDealer(id);

            return View(dealerholder);
        }

        //
        // GET: /Edmunds/Create

        public ActionResult Create()
        {
            return View();
        }

        //
        // POST: /Edmunds/Create
        public class Result
        {
            public ICollection<DealersTemp.DealerHolder>DealerHolder { get; set; }
        }
        //[HttpPost]
        //public ActionResult Create(BlogPost blogpost)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        _repository.CreateBlogPost(blogpost);
        //        return RedirectToAction("Index");
        //    }

        //    return View(blogpost);
        //}
        [HttpPost]
        public ActionResult Create(string zip, string make)
        {
            string url = "http://api.edmunds.com/v1/api/dealer?zipcode=" + zip.Replace(" ", "") + "&makeName=" + make.Replace(" ", "") + "&radius=3000&fmt=json&api_key=8rqtk3bb4bc4xgydqspvmc2s";
            //WebRequest request = WebRequest.Create(url);
            WebClient wc = new WebClient();
            string stws = wc.DownloadString(url);

            JToken root = JObject.Parse(stws);
            JToken dealerholder = root["dealerHolder"];
            DealerTentSaleMVC.Models.DealersTemp.DealerHolder convertedProducts = new DealerTentSaleMVC.Models.DealersTemp.DealerHolder();
            string dh = dealerholder.ToString().Replace("[", "").Replace("]", "");
            Result result = JsonConvert.DeserializeObject<Result>(stws); 


            foreach (var d in result.DealerHolder)
            {
                DealersTemp.DealerHolder newD = new DealersTemp.DealerHolder { active=d.active, contactinfo=d.contactinfo, address=d.address, id=d.id, locationId=d.locationId, logicalName=d.logicalName, make=d.make, name=d.name, operations=d.operations, publishDate=d.publishDate, syncPublishDate=d.syncPublishDate, type=d.type };


                _repository.CreateDealer(d);
            }
            //DataContractJsonSerializer jsonSerializer =
            //        new DataContractJsonSerializer(typeof(DealersTemp.RootObject));
            //DealersTemp.RootObject products = (DealersTemp.RootObject)jsonSerializer.ReadObject(ws.GetResponseStream());
            //List<DealersTemp.DealerHolder> convertProducts = (DealersTemp.DealerHolder)products.dealerHolder;


            return RedirectToAction("Index");
        }

        //
        // GET: /Edmunds/Edit/5

        public ActionResult Edit(int id)
        {
            DealersTemp.DealerHolder dealer = _repository.ReadDealer(id);

            return View(dealer);
        }

        //
        // POST: /Edmunds/Edit/5

        [HttpPost]
        public ActionResult Edit(DealerTentSaleMVC.Models.DealersTemp.DealerHolder dealerholder)
        {
            if (ModelState.IsValid)
            {
                _repository.UpdateDealer(dealerholder);

                return RedirectToAction("Index");
            }
            return View(dealerholder);
        }

        //
        // GET: /Edmunds/Delete/5

        public ActionResult Delete(int id)
        {
            DealersTemp.DealerHolder dealer = _repository.ReadDealer(id);
            return View(dealer);
        }

        //
        // POST: /Edmunds/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            _repository.DeleteDealer(id);
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }
    }
}