Апдейт: в этих questions есть ещё объекты (прикрепляю картинку, в красной рамке), попытался сделать как-то так (красным цветом):
Код:
if (survey.LogicalName == "bf_survey")
{
survey.Id = Guid.Empty;
survey.Attributes.Remove("bf_surveyid");
survey["bf_survey_name"] = "[COPY] " + survey["bf_survey_name"];
Guid Lid = _orgService.Create(survey);
QueryExpression qry = new QueryExpression()
{
EntityName = "bf_surveyquestion",
ColumnSet = new ColumnSet(true)
};
qry.Criteria.AddCondition("bf_surveyquestion_survey", ConditionOperator.Equal, context.PrimaryEntityId);
var questions = _orgService.RetrieveMultiple(qry).Entities;
foreach (var question in questions)
{
question.Attributes.Remove("bf_surveyquestionid");
question.Id = Guid.NewGuid();
string regardingaccountype = "bf_survey";
question["bf_surveyquestion_survey"] = new EntityReference(regardingaccountype, Lid);
Guid quest = _orgService.Create(question);
QueryExpression evalobj = new QueryExpression()
{
EntityName = "bf_surveyqevalobject",
ColumnSet = new ColumnSet(true)
};
evalobj.Criteria.AddCondition("bf_surveyqevalobject_squ", ConditionOperator.Equal, question.Id);
var evobjects = _orgService.RetrieveMultiple(evalobj).Entities;
foreach (var evobject in evobjects)
{
evobject.Attributes.Remove("bf_surveyquestiongroupid");
evobject.Id = Guid.NewGuid();
string objects = "bf_surveyqevalobject";
evobject["bf_surveyqevalobject_squ"] = new EntityReference(objects, quest);
_orgService.Create(evobject);
}
}
}
Но опять же question.Id, это ид новой записи, но мне как-то надо сравнить с той где есть эти объекты, брр