Итак, у меня есть установка MS Dynamics CRM 2013, в которую я пытаюсь интегрировать некоторые элементы и хочу отправить некоторые данные. У меня есть интерфейс (IAccnt), который я хочу применить к прокси-классу, сгенерированному при добавлении ссылки на службу в ... XRMServices/2011/OrganizationData.svc/ (я добавил частичный класс)
Когда я первоначально добавил интерфейс (у него были только «Имя» и «Номер учетной записи»), все шло хорошо (т.е. можно было сохранять элементы) ... Я добавил в интерфейс новый элемент, который не имел прямого следствия ( «Электронная почта»), но это сопоставлялось (поэтому геттер и сеттер просто передавали данные в и из this.EMailAddress1)
С этим изменением я теперь получаю следующую ошибку при сохранении: Ошибка обработки потока запроса. Имя свойства «Электронная почта», указанное для типа «Microsoft.Crm.Sdk.Data.Services.Account», недопустимо.
Это неожиданно, поскольку я отправляю объект Microsoft.Crm.Sdk.Data.Services.Account, поэтому на нем не должно быть электронной почты? И независимо от того, я должен иметь возможность отправить больше информации, чем необходимо? Есть ли что-то, что мне нужно сделать, чтобы иметь возможность добавить интерфейс в прокси-класс и чтобы сохранение все еще работало?
Я пытался добавить [XmlIgnore] и [IgnoreDataMember] в реализацию общедоступного свойства электронной почты, но тот же результат... Что-то вроде этого (т.е. "игнорировать эти свойства, когда ".AddToAccountSet"/".SaveChanges()", вероятно, решит этот вопрос?
Код интерфейса
public interface IMyAccount
{
string Name { get; set; }
string Email { get; set; }
}
Частичный класс (частичный для прокси-класса, созданного из ссылки на службу)
namespace MyNamespace.CustomerRelationshipManagement.MicrosoftDynamics.CrmServiceReference
{
public partial class Account : MyNamespace.Interfaces.IMyAccount
{
public string Email { get { return this.EMailAddress1; } set { this.EMailAddress1 = value; } }
}
}
Откуда возникает ошибка (попытка добавить учетную запись)
var crmUri = new Uri("http://crminstallation/XRMServices/2011/OrganizationData.svc/");
var crmService = new CrmServiceReference.CrmInstallationContext(crmUri);
crmService.Credentials = System.Net.CredentialCache.DefaultCredentials;
var crmMyAccount = new CrmServiceReference.Account();
crmMyAccount.Name = "Test Account";
crmMyAccount.Email = "[email protected]";
crmService.AddToAccountSet(crmMyAccount);
crmService.SaveChanges();
Если электронная почта удалена из интерфейса и из частичного класса, то она работает (поскольку она сохраняет новую учетную запись в CRM).