NopCommerce 3.8 का उपयोग, विजुअल स्टूडियो 2015 proff।नोपॉमर्स अपडेट इकाई समस्या
मैंने एक प्लगइन बनाया है जो मेरे वेब एपीआई में आराम से कॉल करने के लिए ज़िम्मेदार है जो एनओपी के लिए एक अलग डीबी का खुलासा करता है।
प्रक्रिया एक एनओपी कार्य के माध्यम से चलायी जाती है, यह सफलतापूर्वक डेटा को वापस खींचती है और मैं फिट बैठता हूं और मैनिपुलेट कर सकता हूं क्योंकि मैं फिट देखता हूं, अब तक कोई समस्या नहीं है।
समस्या तब होती है जब मैं उत्पाद तालिका पर एक रिकॉर्ड अद्यतन करने का प्रयास करता हूं, मैं अद्यतन करता हूं ... लेकिन कुछ भी नहीं होता है, कोई त्रुटि नहीं।
मेरा मानना है कि यह संदर्भ के कारण मेरे नए तत्काल उत्पाद वस्तु के बारे में कोई जानकारी नहीं है, हालांकि मैं अपने विशेष उदाहरण के संबंध में जो करना चाहता हूं उस पर एक खाली चित्रण कर रहा हूं।
इसी प्रकार के प्रश्न आमतौर पर "मॉडल" ऑब्जेक्ट का संदर्भ देते हैं जो विधि कॉल के पैरामीटर का हिस्सा है, "मॉडल" में विधि ToEntity
है जो स्टैक में समान प्रश्न में उत्तर लगता है।
हालांकि मेरे उदाहरण में ToEntity
वर्ग/विधि संभवतः नहीं है क्योंकि मेरा पैरामीटर वास्तव में उत्पादों की एक सूची है। यहां मेरा कोड स्पष्ट करने के लिए। मेरी सेवा कक्षा में RestClient.cs में
विधि
public async Task<List<T>> GetAsync()
{
try
{
var httpClient = new HttpClient();
var json = await httpClient.GetStringAsync(ApiControllerURL);
var taskModels = JsonConvert.DeserializeObject<List<T>>(json);
return taskModels;
}
catch (Exception e)
{
return null;
}
}
विधि
public async Task<List<MWProduct>> GetProductsAsync()
{
RestClient<MWProduct> restClient = new RestClient<MWProduct>(ApiConst.Products);
var productsList = await restClient.GetAsync();
InsertSyncProd(productsList.Select(x => x).ToList());
return productsList;
}
private void InsertSyncProd(List<MWProduct> inserted)
{
var model = inserted.Select(x =>
{
switch (x.AD_Action)
{
case "I":
//_productService.InsertProduct(row);
break;
case "U":
UpdateSyncProd(inserted);
.....
तो विधि बाँध और अद्यतन करने के लिए
private void UpdateSyncProd(List<MWProduct> inserted)
{
var me = inserted.Select(x =>
{
var productEnt = _productRepos.Table.FirstOrDefault(ent => ent.Sku == x.Sku.ToString());
if(productEnt != null)
{
productEnt.Sku = x.Sku.ToString();
productEnt.ShortDescription = x.ShortDescription;
productEnt.FullDescription = x.FullDescription;
productEnt.Name = x.Name;
productEnt.Height = x.Pd_height != null ? Convert.ToDecimal(x.Pd_height) : 0;
productEnt.Width = x.Pd_width != null ? Convert.ToDecimal(x.Pd_width) : 0;
productEnt.Length = x.Pd_depth != null ? Convert.ToDecimal(x.Pd_depth) : 0;
productEnt.UpdatedOnUtc = DateTime.UtcNow;
}
//TODO: set to entity so context nows and can update
_productService.UpdateProduct(productEnt);
return productEnt;
});
}
तो जैसा कि आप देख सकते हैं, मुझे डेटा प्राप्त होता है और परिणाम के आधार पर कुछ विधि के माध्यम से डेटा पास होता है। उस सूची में जिस विधि से मैं पुन: प्रयास करता हूं, और इकाई को तालिका से खींचता हूं, फिर उस छेड़छाड़ वाली इकाई का उपयोग करके उत्पाद सेवा के माध्यम से अद्यतन करता हूं।
तो मैं यहां क्या खो रहा हूं, मुझे यकीन है कि यह 1 कदम है, और मुझे लगता है कि यह या तो हो सकता है क्योंकि 1) संदर्भ में अभी भी इकाई के बारे में कोई जानकारी नहीं है, या 2) इसकी गलत कॉल।
सारांश अद्यतन अद्यतन नहीं हो रहा है, संभावित रूप से संदर्भ के बिना संदर्भ या मेरी पद्धति गलत है। (शायद दोनों)।
अद्यतन:
मैं सभी मेरी सेवा के आसपास कुछ logger.inertlog
कहा, यह सब अद्यतन की कॉल की बात करने के ठीक होकर गुजरती है। लेकिन फिर मैं उत्पाद की जांच करता हूं और व्यवस्थापक अनुभाग में कुछ भी नहीं बदला है।
मैं पूर्ण स्रोत प्रदान की है के रूप में मुझे लगता है कि शायद इस कोड को सेटअप संभवतः के बाकी के साथ कुछ करने के लिए है?
अद्यतन:
जोड़ा गया मेरी निष्पादित पद्धति पर testin के लिए निम्नलिखित।
var myprod = _productRepos.GetById(4852);
myprod.ShortDescription = "db test";
productRepos.Update(myprod);
यह सफलतापूर्वक उत्पाद विवरण अद्यतन करता है। मैंने अपनी सेवाओं से कार्य वर्ग में अपनी विधियों को स्थानांतरित कर दिया लेकिन अभी भी कोई भाग्य नहीं है। जितना अधिक मैं इसे और अधिक सोचता हूं कि मेरा एसिंक किसी भी तरह डीबी संदर्भ को मार रहा है।
अरे, क्या आपने सीधे डेटाबेस में चेक किया था? वहां पर प्रदर्शित परिवर्तन? –
हां, जहां अपडेट किया गया है, इसलिए मैं इसे कैश समस्या नहीं सोचता, हालांकि – lemunk
कौन जानता है ठीक है, कोड अच्छा दिखता है, और जांच करने की आवश्यकता है। –