Капитализация пользовательских объектов, полей в CRM 2011 - PullRequest
1 голос
/ 18 ноября 2011

При переходе на CRM 2011 мы обнаруживаем, что разные разработчики использовали разную прописную букву пользовательских сущностей и настраиваемых полей.Это создает головную боль для пользовательского программирования с использованием методов раннего связывания.http://msdn.microsoft.com/en-us/library/gg327844.aspx. Есть ли способ нормализовать имена объектов / полей до (или после) миграции?

1 Ответ

2 голосов
/ 18 ноября 2011

Насколько я знаю.Единственный способ добиться правильной заглавной буквы, которую вы хотите, - это воссоздать сущности с соответствующими именами.

До или после миграции в основном выполняется обновление установки сервера CRM и изменение схемы базы данных в соответствии с обновлением,сохраняя текущие данные и данные настройки.

То же самое, что и «Поддерживаемый» уровень.

Что касается фактического обходного пути.Если вы в любом случае хотите обновить систему, у меня возникнет соблазн восстановить вашу текущую систему CRM 4 в тестовый домен.Затем посмотрите, насколько возможно изменить имена схем в реальной «неприкасаемой» базе данных crm.Я считаю, что есть таблица MetaDataSchema.Entity, где она хранится централизованно, поэтому я протестировал бы ее, чтобы увидеть, насколько она полезна и какое влияние она оказывает, скажем, на веб-сервис.

Таким образом, вы сталкиваетесь с похожим выбором, с которым я сталкиваюсь несколько раз при работе с Dynamics CRM.Перейти с поддерживаемым путем, или немного развития "Йи-Ха".Извините, это, вероятно, не то, что вы хотите услышать!

Редактировать:

Относительно того, что изменить, я не могу сказать наверняка, так как у меня нетСистема CRM 4.0 будет вручена только в 2011 году.Однако в качестве примера в базе данных [OrganisationName_MSCRM] будет таблица MetadataSchema.Entity.Из которых выскочат определенные столбцы.Имя, Физическое имя и Логическое имя.

Логическое имя - это имя пользователя CRM, которое по умолчанию вводится в нижнем регистре независимо от того, как вы его вводите.

Я считаю, что PhysicalName и Name - это то, что вы хотели бы перевести в нижний регистр.

Фактическое «Имя» сущности, например, логическое имя - «account», тогда как в CRM, где оно отображается удобным для пользователя способом, оно связано через таблицу с именем MetadataSchema.LocalizedLabel через внешний ключ «ObjectId»который в этом случае будет полем «EntityId».

Здесь я хотел бы внести изменения, поскольку они не должны влиять на остальные данные, поскольку поле "логическое имя", которое, вероятно, использует CRM.

Насколько ваше поколение для строго типов классов идет.

если вы используете позднюю привязку, такую ​​как

relatedEntity.LogicalName = "new_related_account";
relatedEntity["relatedaccountid"] = entity["accountid"];

, тогда все свойства и логические имена должны быть в нижнем регистре.Поскольку при этом будет использоваться свойство «логическое имя», ранее определенное в таблице MetadataSchema.

Как бы то ни было, используя SVCUtil, я могу только предполагать, что он смотрит на атрибуты «Имя» и «Физическое имя», чтобы дать немного более удобное для пользователя кодированиеопыт, когда он генерирует файл для использования в пользовательских приложениях.

Хотя, если вы хотите использовать классы с ранним связыванием, это не должно быть проблемой, так как сгенерированный файл определения обеспечит интеллигентность правильной прописной буквы атрибутов и свойств, а если вы используете позднюю границу, какпример ранее это все строчные.Так что больше на это будет смотреться немного неопрятно, чем совершенно непрактично =)

...