मैं एएसपीनेट कोर एमवीसी परियोजना को कार्यान्वित कर रहा हूं। ApiApplicant नामक मेरे नियंत्रक वर्ग में, विधि बनाएं, मेरे पास 3 चयनकर्ता हैं कि इसकी वस्तुओं को APIApplicantHistory नामक तालिका से पॉप्युलेट किया जाना चाहिए। मेरे मॉडल और बनाने की विधि और दृश्य निम्नलिखित की तरह लागू किए गए हैं:

    using System.Collections.Generic;

      namespace CSDDashboard.Models
     {
      public partial class Apiapplicant
      {
        public Apiapplicant()
        {
            ApiApplicantHistory = new HashSet<ApiApplicantHistory>();
        }

        public int Id { get; set; }
        public string ApiRequestDate { get; set; }
        public int? ApiRequestNo { get; set; }
        public int? Apiid { get; set; }
        public int? ApplicantId { get; set; }
        public int? GateId { get; set; }
        public string NocRequestDate { get; set; }
        public string NocRequestNo { get; set; }
        public string Url { get; set; }
        public string Description { get; set; }
        public bool? IsDeleted { get; set; }

        public virtual Api Api { get; set; }
        public virtual Applicant Applicant { get; set; }
        public virtual Gate Gate { get; set; }
        public virtual ICollection<ApiApplicantHistory> ApiApplicantHistory { get; set; }
    }
}

     using System;
     using System.Collections.Generic;

     namespace CSDDashboard.Models
     {
     public partial class ApiApplicantHistory
     {
        public int Id { get; set; }
        public int? ApiApplicantId { get; set; }
        public string Date { get; set; }
        public int? SentResponseType { get; set; }
        public int? UnconfirmedReason { get; set; }
        public int LastReqStatus { get; set; }
        public string Description { get; set; }

           public virtual Apiapplicant ApiApplicant { get; set; }
           public virtual EntityType LastReqStatusNavigation { get; set; }
           public virtual EntityType SentResponseTypeNavigation { get; set; }
           public virtual EntityType UnconfirmedReasonNavigation { get; set; }
        }
       }


       using System;
       using System.Collections.Generic;

       namespace CSDDashboard.Models
       {
        public partial class EntityType
       {
        public EntityType()
        {
            ApiApplicantHistoryLastReqStatusNavigation = new HashSet<ApiApplicantHistory>();
            ApiApplicantHistorySentResponseTypeNavigation = new HashSet<ApiApplicantHistory>();
            ApiApplicantHistoryUnconfirmedReasonNavigation = new HashSet<ApiApplicantHistory>();
        }

        public int Id { get; set; }
        public string Name { get; set; }
        public string EntityKey { get; set; }

        public virtual ICollection<ApiApplicantHistory> ApiApplicantHistoryLastReqStatusNavigation { get; set; }
        public virtual ICollection<ApiApplicantHistory> ApiApplicantHistorySentResponseTypeNavigation { get; set; }
        public virtual ICollection<ApiApplicantHistory> ApiApplicantHistoryUnconfirmedReasonNavigation { get; set; }

    }
}


      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Threading.Tasks;

      namespace CSDDashboard.Models
      {
      public class APIApplicantViewModel
      {
            public Apiapplicant apiApplicantvm { get; set; }

             public ApiApplicantHistory apiApplicantHistoryvm { get; set; }
       }
      }


       public class ApiapplicantsController : Controller
       {
        private readonly CSSDDashboardContext _context;

        public ApiapplicantsController(CSSDDashboardContext context)
        {
            _context = context;
        }

       public IActionResult Create()
        {

            ViewData["sentResponseType"] = new SelectList(_context.EntityType.Where(g => g.EntityKey == "sentResponseType").ToList(), "ID", "name");
            ViewData["unconfirmedReason"] = new SelectList(_context.EntityType.Where(g => g.EntityKey == "unconfirmedReason").ToList(), "ID", "name");
            ViewData["lastReqStatus"] = new SelectList(_context.EntityType.Where(g => g.EntityKey == "lastRequestStatus").ToList(), "ID", "name");

            return View();

        }
       }

और दृश्य कार्यान्वयन का एक हिस्सा:

     @model CSDDashboard.Models.APIApplicantViewModel

       @{
       ViewData["Title"] = "create";
       }
        <div class="row">
         <div class="col-md-4">
          <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
          <div class="form-group">
                <label asp-for="apiApplicantvm.GateId" class="control-label"></label>
                <select asp-for="apiApplicantvm.GateId" class="form-control" asp-items="ViewBag.GateId"></select>
            </div>
        <div class="form-group">
    <label asp-for="apiApplicantHistoryvm.SentResponseType" class="control-label"></label>
        <select asp-for="apiApplicantHistoryvm.SentResponseType" class="form-control" asp-items="ViewBag.sentResponseType"></select>
        </div>
       <div class="form-group">
        <label asp-for="apiApplicantHistoryvm.UnconfirmedReason" class="control-label"></label>
        <select asp-for="apiApplicantHistoryvm.UnconfirmedReason" class="form-control" asp-items="ViewBag.unconfirmedReason"></select>

       </div>
        <div class="form-group">
            <label asp-for="apiApplicantHistoryvm.LastReqStatus" class="control-label"></label>
            <select asp-for="apiApplicantHistoryvm.LastReqStatus" class="form-control" asp-items="ViewBag.lastReqStatus"></select>
        </div>
<div class="form-group">
                    <input type="submit" value="Create" class="btn btn-primary" />
                </div>
        </form>
       </div>
      </div>

       <div>
       <a asp-action="Index">Back</a>
       </div>

     @section Scripts {
      @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    }

निर्माण विधि में, सभी व्यूडेटा सही संबंधित डेटा से भरे हुए हैं लेकिन समस्या दृश्य बनाएं में मौजूद है, प्रोजेक्ट चलाने के बाद नीचे की तरह एक त्रुटि बनाएं पृष्ठ में दिखाया गया है:

अनुरोध संसाधित करते समय एक हैंडल न किया गया अपवाद उत्पन्न हुआ। NullReferenceException: ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट की आवृत्ति पर सेट नहीं है।

कोड डीबग करने के बाद मैं समझता हूं कि दृश्य बनाने में, apiApplicantvm शून्य नहीं है, लेकिन apiApplicantHistoryvm शून्य देता है और उपरोक्त त्रुटि उसके कारण है। मैं सराहना करता हूं अगर कोई मुझे बता सकता है कि समस्या को कैसे ठीक किया जाए।

0
hrz 19 फरवरी 2020, 15:41
क्या आप कृपया अपना OnModelCreating dbcontext से जोड़ सकते हैं?
 – 
Arvind Maurya
19 फरवरी 2020, 16:12
_context.EntityType.Where(g=>g.EntityKey=="sentResponseType").Include(x=>x.ApiApplicantHistoryLastReqStatusNavigation).ToList() या अधिक जानकारी के लिए अपने मोडल क्रिएटिंगक्रिएटिंग protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseLazyLoadingProxies() .UseSqlServer(myConnectionString); पर docs.microsoft.com/en-us/ef/core/querying/संबंधित-डेटा
 – 
Arvind Maurya
19 फरवरी 2020, 16:17
आपने अपने घोषित ViewModel को दृश्य में उपयोग नहीं किया है
 – 
Arvind Maurya
19 फरवरी 2020, 16:20
आपकी प्रतिक्रिया के लिए धन्यवाद। क्या आप कृपया अपना उत्तर अधिक स्पष्ट रूप से समझा सकते हैं?
 – 
hrz
22 फरवरी 2020, 08:29
क्या आप अपनी निर्माण विधि में var ent =_context.EntityType.Where(g=>g.EntityKey=="sentResponseType") .Include(x=>x.ApiApplicantHistoryLastReqStatusNavigation).ToList() आज़मा सकते हैं और इसके लिए प्रतिक्रिया जांच सकते हैं?
 – 
Arvind Maurya
22 फरवरी 2020, 08:44

3 जवाब

मुझे आशा है कि आप EF कोर का उपयोग ORM के रूप में कर रहे होंगे क्योंकि आप Asp.net core का उपयोग कर रहे हैं।

संबंधित डेटा को EF core में लोड करने के लिए।

इसे 2 तरीकों से किया जा सकता है या आलसी लोडिंग

उत्सुक लोड हो रहा है

_context.EntityType.Where(g=>g.EntityKey=="sentResponseType") .Include(x=>x.ApiApplicantHistoryLastReqStatusNavigation).ToList()

या

आलसी लोड हो रहा है आपके मोडल बनाने पर

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder .UseLazyLoadingProxies() .UseSqlServer(myConnectionString);

या

अपने कोर एमवीसी प्रोजेक्ट के स्टार्टअप.सीएस पर आलसी लोडिंग उदाहरण।

.AddDbContext<BloggingContext>( b => b.UseLazyLoadingProxies() .UseSqlServer(myConnectionString));

अधिक जानकारी के लिए docs.microsoft.com/en-us/ef/core/querying/संबंधित-डेटा

https://docs.microsoft.com/en-us/ef/core/querying/संबंधित-डेटा

0
Arvind Maurya 19 फरवरी 2020, 16:29

उत्तरों के लिए बहुत-बहुत धन्यवाद। मैं ईएफ कोर का उपयोग कर रहा हूं और जैसा आपने सुझाव दिया है मैंने अपना कोड बदल दिया है। मैंने ViewData["sentResponseType"] = new SelectList(_context.EntityType.Where(g => g.EntityKey == "sentResponseType") जोड़ा। शामिल करें (x => x.ApiApplicantHistoryLastReqStatusNavigation).ToList (), "ID", " नाम");

मेरी बनाने की विधि में।

और मेरी समस्या यहाँ दृश्य बनाएँ में है, नीचे की पंक्ति में apiApplicantHistoryvm में एक शून्य मान मौजूद है:

0
hrz 22 फरवरी 2020, 08:45

सहायता के लिए धनयवाद। समस्या यहाँ मेरे कोड ViewData["sentResponseType"] = new SelectList(_context.EntityType.Where(g => g.EntityKey == "sentResponseType") में थी। ToList (), "ID", "name");

मुझे अपने EntityType मॉडल के अनुसार आईडी के बजाय आईडी का उपयोग करना चाहिए।

0
hrz 22 फरवरी 2020, 15:39