No there is no way to disable caching. You must manually set each query to reaload data. That feature is not available with DbContext API => you must use ObjectContext API.
ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
ObjectSet<YourEntity> set = objectContext.CreateObjectSet<YourEntity>();
set.MergeOption = MergeOption.OverwriteChanges;
var query = from x in set where ... select x;
Or simpler scenario: use better context management if possible and instead of running queries on the same context us a new one.
Btw. idea of having service exposed in winform application and consumed it by web site is wrong. You would need third service application (either hosted on web server or as windows service) and both website and winform application will access database through that new application. EF would be only in the new application.
Edit:
If your WinForm application doesn't make changes to data loaded from database you can also use this:
var query = from x context.YourEntities.AsNoTracking() where ... select x;
This will turn off internal change tracking of entities and it should also force EF to reload entity each time but it will make saving changes much harder.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…