在这里对Dynamics4.0和Dynamics2011中处理Email的方法做一个简单的总结:
在Dynamics中Email是作为一个Activity Entity存在的,并且存储在ActivityPointerBase表中(这个表的field集合了所有的Activity Entity的字段,如:Email,Appointment,Letter,Task,Fax等等);
而每一个Activity Entity会与其他的Entity进行相应的关联,这样的关联关系存储在ActivityPartyBase表中,这个表中三个最主要的字段:ActivityId表示Activity Entity的Id,PartyId表示与之相关联的其他Entity的Id,ActivityPartyId为此表的主键。
而EmailSearchBase这个表中记录了所有的EmailAddress的关联关系,即:这个EmailAddress是哪一个Entity的EmailAddress字段。
EmailAddress和Activity Entity的Email是有本质上的区别的,这样的设计和SalesForce中的Email的设计是一样的。EmailAddress只是一个Object(SF)或是Entity(Dynamics)记录的一个字段;而Activity Entity的Email则是进行收发的Email实体,只不过From,To,Cc,Bcc会分别关联到相应的EmailAddress,在SF端From,To,Cc,Bcc就是一个EmailAddress字符串,但是在Dynamics端From,To,Cc,Bcc是一个含有EmailAddress字段的Entity(如:user,account,lead等等)。
在Dynamics API 4.0中创建Email时添加From,To,Cc,Bcc的方法是
activityparty from = new activityparty();
from.partyid = new Lookup();
from.partyid.type = "systemuser";
from.partyid.Value = new Guid(“F60AF982-54C2-E011-B910-0050568E03AC”);
emailEntity.from = new activityparty[] { from };
activityparty to = new activityparty();
to.partyid = new Lookup();
to.partyid.type = "account";
to.partyid.Value = new Guid(“60007DC6-62C2-E011-BA0B-0050568E03AC”);
emailEntity.to = new activityparty[] { to };
等等。。。
在Dynamics API 2011中创建Email时添加From,To,Cc,Bcc的方法是
Entity emailEntity = new Entity("email");
Entity to = new Entity("activityparty");
to.Attributes.Add("partyid", new EntityReference("account", new Guid("CBC1FB8F-42CA-E011-999B-0050568E03AC")));
emailEntity.Attributes.Add("to", new Entity[] { to });