1

当我运行下面的代码时,它会添加记录,但一开始它并没有包含在 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);
4

1 回答 1

1

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

于 2013-04-09T20:55:44.913 回答