最近添加的记录不包含在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);

最近添加的记录不包含在CrmOrganizationServiceContext ContactSet中

这与上下文如何跟踪记录有关。默认情况下,MergeOption枚举被设置为AppendOnly。这意味着一旦记录在上下文中被跟踪,就不会用来自服务器的数据更新它。因此,当您开始跟踪testContact时,它不会让您检索它,因为它认为它是一个"新"记录(没有Guid)。因此,您最可能想做的是将上下文上的枚举设置为NoTracking或OverwriteChanges。那样它就不会在上下文中跟踪记录,或者在你调用检索记录时更新它。