MSCRM4.0 为实体添加附件功能

来源:互联网 发布:步兵樱井知香影音先锋 编辑:程序博客网 时间:2024/06/16 03:41

有的时候我们在创建完实体之后发现,由于自己的不小心,在创建实体关系选项中删除了注释(包括附件)的功能,或者由于之前考虑的不周到,没想到该实体将来会使用到附件的功能,这样的话,如果实体简单,可以通过删除新建然后完成,如果实体中字段过多,这个过程就相当的麻烦了。下面是我使用的一种方法,用来改变这个状态。

 

首先请备份数据库

 

  1. 新建两个实体new_noattachment,new_attachment。new_noattachment建立的时候将关系中的附件勾去掉,new_attachment这个保留
  2. 导出这两个实体的XML,使用XML对比工具(例如:ExamXML),对比一下这两个实体有什么地方是不一致的
  3. 发现不一致的地方主要有两个:FormXml这个节点里面的tabs里面少一个tab(这个tab就是用来添加注释或者附件的);在EntityRelationships节点里面少了一个关系,关系是和实体Annotation对应起来的。上面两个不一样的地方比较容易对比出来,但是还有一个比较隐蔽的地方,因为实体的不一直,可能你会在意不到,但是如果这个地方不改动的话更改完成导入之后会有错误产生:The entity relationship role of the referencing entity is required when creating a new one-to-many entity relationship new_noattachment_Annotations。   这个需要注意的地方就是在EntityInfo节点里面的HasRelatedNotes这个节点的值,如果是False请修改为True
  4. 修改HasRelatedNotes节点的值,将False修改为True
  5. FormXmltabs里面添加一个tab,tab如下:          

                <tab id="{4f91fc75-4667-4e75-a628-212b09a6257e}" IsUserDefined="0">                  <labels>                    <label description="注释" languagecode="2052" />                  </labels>                  <sections>                    <section showlabel="true" showbar="true" locklevel="1" id="{84de336e-7eaa-49a3-b119-d4190792e6d9}" IsUserDefined="0" height="auto">                      <labels>                        <label description="注释" languagecode="2052" />                      </labels>                      <rows>                        <row>                          <cell colspan="2" showlabel="false" rowspan="5" auto="true" id="{46a7d824-10c2-4476-906a-d8efaea4f5df}">                            <labels>                              <label description="注释文字" languagecode="2052" />                            </labels>                            <control id="notescontrol" classid="{06375649-c143-495e-a496-c962e5b4488e}" />                          </cell>                        </row>                        <row />                        <row />                        <row />                        <row height="auto" />                      </rows>                    </section>                  </sections>                </tab>


6.   在EntityRelationships节点里面添加一个新的关系,XML如下:

 

<EntityRelationship Name="new_noattachment_Annotations">      <EntityRelationshipType>OneToMany</EntityRelationshipType>      <ReferencingEntityName>Annotation</ReferencingEntityName>      <ReferencedEntityName>new_noattachment</ReferencedEntityName>      <CascadeAssign>Cascade</CascadeAssign>      <CascadeDelete>Cascade</CascadeDelete>      <CascadeReparent>Cascade</CascadeReparent>      <CascadeShare>Cascade</CascadeShare>      <CascadeUnshare>Cascade</CascadeUnshare>      <ReferencingAttributeName>objectid</ReferencingAttributeName>      <RelationshipDescription>        <Descriptions>          <Description description="与注释关联的对象的唯一标识符。" languagecode="2052" />        </Descriptions>      </RelationshipDescription>      <field name="objectid" requiredlevel="none" imemode="auto" lookupstyle="single" lookupbrowse="0">        <displaynames>          <displayname description="关于" languagecode="2052" />        </displaynames>      </field>    </EntityRelationship>

 

7.   完成上面步骤之后将对应的CRM中的原有实体删除

8.   导入修改过的XML,导入成功之后发布,查看新导入的时候是否已经修改为可添加附件和注释的实体。

 

我改动的方法大致就是上面这样,如果还有其他更好的方法请大家提出来共同学习

 

谢谢