मुझे पता है कि इस विषय पर बहुत सी पोस्ट हैं लेकिन मुझे ऐसा कोई नहीं मिल रहा है जो मुझे जो चाहिए वह करने में मदद करता है। मुझे पता है कि मैं अंततः ऑटोमैपर का उपयोग कर रहा हूं लेकिन इससे पहले कि मैं इसके साथ खेलना शुरू कर दूं, मैं सीखना चाहता हूं कि चीजों को मैन्युअल रूप से कैसे करें। मैं एक व्यूमोडेल बनाना चाहता हूं, इसे अपनी संस्थाओं से मूल्यों के साथ एक भंडार के माध्यम से पॉप्युलेट करना चाहता हूं और इसे अपने दृश्य में भेजना चाहता हूं। इस ध्वनि के रूप में सरल, मैं इसे करने के लिए तस्करी कर रहा हूँ। मैं एमवीसी 3, ईएफ 4.3, डेटाबेस पहले का उपयोग कर रहा हूँ। मैंने अपनी कक्षाओं को स्वतः उत्पन्न किया है।मैं मैन्युअल रूप से व्यूमोडेल (ऑटोमैपर का उपयोग नहीं कर रहा हूं)
सकल निकाय:: शिपिंग हैडर
using System;
using System.Collections.Generic;
namespace My.Models
{
public partial class ShippingHdr
{
public ShippingHdr()
{
this.ShippingLI = new HashSet<ShippingLI>();
}
public int ID { get; set; }
public int ShipToSiteID { get; set; }
public Nullable<System.DateTime> DateShipped { get; set; }
public Nullable<System.DateTime> EstDeliveryDate { get; set; }
public string FromSitePOC { get; set; }
public Nullable<int> ShipperID { get; set; }
public string TrackingNo { get; set; }
public string Comments { get; set;}
public virtual Shippers Shippers { get; set; }
public virtual ICollection<ShippingLI> ShippingLI { get; set; }
}
}
यहाँ मेरी ViewModel
है मैं प्रासंगिक संस्थाओं (संक्षिप्त/इस पोस्ट के लिए नाम बदला) और वर्गों पोस्टिंग कर रहा हूँ, यहाँ क्या मैं अब तक किया हैusing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace My.Models.ViewModels
{
public class ShippingHeaderSummaryVM
{
public int ID { get; set; }
public string Site { get; set; }
public Nullable<System.DateTime> DateShipped { get; set; }
public Nullable<System.DateTime> EstDeliveryDate { get; set; }
public string TrackingNo { get; set; }
public string HeaderComments { get; set; }
public string Shipper { get; set; }
public int NumOrders { get; set; }
public string Site { get; set; }
}
}
यहाँ एक प्रश्न मैं आइटम मैं के साथ मेरी ViewModel पॉप्युलेट करने के लिए उपयोग करना चाहते हैं वापस जाने के लिए मिल गया है। मेरा मानना है कि इसके लिए सबसे अच्छी जगह एक रिपोजिटरी में है। मैंने सत्यापित किया कि यह डेटा मैं लिंककैड का उपयोग कर चाहता हूं (इसलिए मेरे डीबीकॉन्स्ट के लिए अनुपलब्ध संदर्भ)। मैं सिर्फ ViewModel करने के लिए क्वेरी से मूल्यों को प्राप्त करने के लिए पता नहीं कैसे:
var shipments = from h in c.ShippingHdrs
where (h.ShippingLI.Count > 1)
join
e in c.vHr_Employees on h.CreatedBy equals e.ID
join
s in c.Shippers on h.ShipperID equals s.ShipperID
join
r in vAaiomsSites on h.ShipToSiteID equals r.SiteID
select new
{
h.ID,
r.Site,
h.EstDeliveryDate,
h.DateShipped,
h.TrackingNumber,
h.HeaderComments,
e.LastName,
h.ShippingLI.Count,
s.Shipper
};
तो क्या मैं Automapper का उपयोग किए बिना ऐसा करने के लिए, फिर से चाहते हैं, ShippingHdr से पंक्तियों के सभी के साथ ViewModel को भरने के लिए है इकाई और इसे मेरे विचार में पास करें।
ShippingHeaderSummaryVM लदान
ID = h.ID
Site = r.Site
DateShipped = h.DateShipped
EstDeliveryDate = h.EstDeliveryDate
TrackingNo = h.TrackingNumber
FromSitePOC = e.LastName
NumOrders = h.ShippingLI.Count
Shipper = s.Shipper
HeaderComments = h.HeaderComments
मैं यहाँ अटक कर रहा हूँ से मैप किया गया:
यहाँ filelds मैप किया जा करने की आवश्यकता है। मैं क्वेरी से ViewModel कैसे पॉप्युलेट करूं? फिर मैं अपने नियंत्रक से उस क्रिया को कैसे कॉल करूं?
मुझे आशा है कि मैंने पर्याप्त जानकारी दी है, किसी भी मदद की सराहना की जाएगी।
टिप टाइपो सुधार के लिए धन्यवाद,' तुम सिर्फ जा सकते हैं '' दिनांक समय –
आप 'कहने के लिए चयन नई ShippingHeaderSummaryVM में सक्षम होना चाहिए {}? ', इनपुट के लिए मॉडल बाइंडर का उपयोग करने के बजाय यह आप आउटपुट है? –
@ लैविंस्की, मैंने अभी इस पोस्ट के लिए मेरी जेनरेट की गई इकाइयों की एक कॉपी/पेस्ट बनाई है, मैं वास्तव में समझ में नहीं आता कि कुछ जहां नलबल के साथ उत्पन्न हुआ, जबकि अन्य नहीं थे। मैंने सोचा कि यह मेरी एसक्यूएल टेबल के साथ मेल खाएगा, लेकिन यह नहीं था। –