最近添加的记录不包含在CrmOrganizationServiceContext ContactSet中
本文关键字:CrmOrganizationServiceContext ContactSet 包含 添加 记录 最近 | 更新日期: 2023-09-27 18:08:24
当我运行下面的代码时,它添加了记录,但它首先不包含在ContactSet中。只有当我再次运行它时它才会显示在ContactSet上,它只显示一次,除了我得到了重复的记录。知道为什么ContactSet不显示新创建的记录吗?
var xrm = new XrmServiceContext("Xrm");
//Create a new contact called Allison Brown.
var testContact = new Contact
{
FirstName = "Allison",
LastName = "Brown",
Address1_Line1 = "101 W 1st St",
Address1_City = "Los Angeles",
Address1_StateOrProvince = "CA",
Address1_PostalCode = "90001",
Telephone1 = "310-111-1111",
EMailAddress1 = "allisonbrown@aol.com"
};
xrm.AddObject(testContact);
xrm.SaveChanges();
var exampleContacts = xrm.ContactSet.Where(c => c.EMailAddress1.EndsWith(".com"));
return View(exampleContacts);
这与上下文如何跟踪记录有关。默认情况下,MergeOption枚举被设置为AppendOnly。这意味着一旦记录在上下文中被跟踪,就不会用来自服务器的数据更新它。因此,当您开始跟踪testContact时,它不会让您检索它,因为它认为它是一个"新"记录(没有Guid)。因此,您最可能想做的是将上下文上的枚举设置为NoTracking或OverwriteChanges。那样它就不会在上下文中跟踪记录,或者在你调用检索记录时更新它。