DynamicModuleManager properly SaveChanges in loop

Posted by GregOnSitefinity on 25-Apr-2019 10:59

Hello,

I am new to Sitefinity development. Can someone tell me where to put this code:

dynamicModuleManager.SaveChanges();
dynamicModuleManager.Lifecycle.Publish(partner);
dynamicModuleManager.SaveChanges();

I have a bunch of partners and I need to change picture for some of them. My code looks like this:

var providerName = "dynamicProvider5";

DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager(providerName);
Type customPartnerType = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.XPartners.XXPartner");


var myCollection = dynamicModuleManager.GetDataItems(customPartnerType).Where(d => d.Status == ContentLifecycleStatus.Master);

foreach (var partner in myCollection)
{
Image emptyHeroImage = partner.GetRelatedItems<Image>("HeroImage").Where(d => d.Status == ContentLifecycleStatus.Master && d.GetValue<string>("Title") == "DefaultImage").FirstOrDefault();

if (emptyHeroImage != null)
{
Image newImage = GetImage(partner.GetString("PartnerID"));

if (newImage!=null)
{
partner.DeleteRelation(emptyHeroImage, "HeroImage");
partner.CreateRelation(newImage, "HeroImage");

dynamicModuleManager.SaveChanges();
dynamicModuleManager.Lifecycle.Publish(partner);
dynamicModuleManager.SaveChanges();
}


}


}

All Replies

This thread is closed