#c# #.net #linq #crm #dynamics-crm-2011
#c# #.net #linq #crm #динамика-crm-2011
Вопрос:
Я разрабатываю против MS CRM 2011. И я обнаружил, что есть много болевых точек, в том числе нарушенная граница, поддержка LINQ с половиной задницы.
Кроме того, последнее связано с множеством встроенных полей, которые были скрыты, устарели и / или не использовались, насколько это касается пользователя. Однако, с точки зрения разработчика, мы понятия не имеем, что эти поля устарели. Контекст, созданный crm util, по-прежнему генерирует эти свойства. Итак, что в итоге происходит, так это то, что разработчики используют код для свойств / отношений / сущностей, который неоднократно считался устаревшим.
Итак, теперь вопрос в том, есть ли способ запросить у служб crm список полей / свойств, которые не представлены ни в какой форме для каждого объекта? Что еще есть способ опросить службы crm для всех неиспользуемых объектов (из-за отсутствия лучшего слова). Это могут быть объекты, которые осиротели, давно не обновлялись и / или были пустыми и т. Д.
Я надеюсь, что с таким списком разработчики будут знать, на что обратить внимание, в отличие от слепого кодирования в контексте crm, что было источником разочарования.
Заранее спасибо.
Ответ №1:
Ну, я не думаю, что вы хотели бы просто генерировать код для полей, которые находятся в формах — я все время использую «скрытые» поля для флагов.
Есть способ заставить crmsvcutil генерировать только те объекты, которые вы хотите:
http://erikpool.blogspot.com/2011/03/filtering-generated-entities-with.html
Похоже, вы немного разочарованы, но пока не сдавайтесь. Безусловно, есть архитектурные решения, которые я ставлю под сомнение, но вся сантехника, которую мне не нужно писать, компенсирует это. Dynamics CRM похожа на любую другую технологию, но я люблю ее больше, чем ненавижу. 🙂
Комментарии:
1. Спасибо, Джош, мне нужно еще немного изучить этот пост, но, похоже, он ведет по правильному пути. Мне все еще нужно выяснить соглашение come, чтобы как-то ограничить сгенерированные объекты. Есть ли способ помечать свойства / поля как устаревшие / неиспользуемые и т.д. — как вы можете в коде?
2. Насколько я знаю, нет. Я лично еще не настраивал crmsvcutil . Однако мне интересно, может ли какой-нибудь постпроцессор прочитать ваши устаревшие поля из пользовательского XML-файла и применить эти атрибуты к свойствам в сгенерированном cs-файле? Я нашел это с помощью быстрого поиска: hanselman.com/blog /…
3. Если вы все еще хотите узнать, какие поля есть в форме, просто посмотрите это: mscrmtools.blogspot.com/2011/10 /…
Ответ №2:
Я не смог найти многого, что позволило бы вам это сделать, по крайней мере, не в CRM 4 (это версия, которую я использую). Кажется, что ничего из этого нигде не задокументировано. Я написал запрос на основе сообщения этого парня, который позволил мне отфильтровать большинство неиспользуемых полей, но было много перебора полей в LocalizedLabelView, чтобы получить то, что я хотел, и даже тогда это было нелегко. Вероятно, сейчас в CRM 2011 это еще сложнее, поскольку у вас может быть несколько форм для каждого объекта.
Комментарии:
1. Я страстно ненавижу этот продукт. Такое ощущение, что он был создан без особого внимания к надежной архитектуре или лучшим практикам.
2. CRM 2011 — это МЕЧТА по сравнению с несколькими последними версиями. Я знаю, что вы чувствуете. Учитывая, что СЛЕДУЮЩАЯ ОСНОВНАЯ ВЕРСИЯ будет ПЕРВОЙ (!), Которая будет запущена в браузерах, отличных от IE, ее довольно сложно защитить. IMO это только там, где оно находится на рынке, из-за его интеграции с Outlook.
3. @Alwyn Я разделяю вашу боль. Я слышал страшные истории о CRM 4, так что, предположительно, нам повезло. Я не согласен… С другой стороны, это узкая область, и получить экспертный уровень относительно легко (мы говорим о крупной оплате за незначительную работу). Не проходит и двух недель между тем, как я рассматриваю возможность отправки почты в Редмонт … 🙂