LinqPad8 is showing me a cached Entity ?
// This is my old Customer ID
var _oldCustomerID = "3ab4e2fb-5111-42d4-a0f2-388399c7d432";
var _newID = Guid.NewGuid().ToString();
// Here i simply display the Entity found using the old customer id
Customers.Single(s => s.CustomerIdInDataHost == _oldCustomerID).Dump();
// ASMX webservice that simply replace the customer id for the Entity (same database as used in my Query)
_dataHostService.ReplaceCustomerIdInDataHost(_datahostapikey, _owner, _newID, _oldCustomerID);
// Show the updated Customer with the new ID
Customers.Single(s => s.CustomerIdInDataHost == _newID).Dump();
Here's the problem: Both Dumps are IDENTICAL, which suggest that LinqPad is showing a cached entity ?
if i do a secondary Query and lookup the Customer , the CustomerID is correctly updated to the New ID
tech : MSSQL server 2017 (compat 110.. 2012)
Comments
I'm guessing this is Linq2Sql caching the entity.
There are a number of ways to resolve this.
If you are not going to be calling SubmitChanges() then you can disable the tracker and caching at the start of your query.
Alternatively keep a reference to the customer that will be changed outside LinqPad, and then refresh that record after calling your webservice - e.g.
Alternatively you can create a new DataContext. Unfortunately you can do re-assign the new context to
this
, but you can something likeThat is kinda dangerous as it is very easy to forget to prefix your query with dc.
Finally, Linq has a method to clear the cache but unfortunately it is marked as private, but you can if you use Uncapsulate, e.g.