Я использую Linq to SQL в качестве уровня DAL, и во время модульного тестирования я обнаружил, что мои объекты возвращаются не из базы данных, а из кэша DataContext.
Странная вещь заключается в том, что когда объекты возвращаются из кэша, для чего требуется отдельный вызов базы данных для извлечения всех полей.
Во всяком случае, я реализовал метод ClearCache, который очистит кеш. Но я очищаю кеш только в модульном тесте, а не в коде API.
Причина в том, что после вставки объекта его хорошо загрузить из кеша, а затем снова извлечь его из базы данных.
Что ты думаешь?
ОБНОВЛЕНИЕ :
public static void ClearCache(this EStudyModelDataContext context)
{
const BindingFlags Flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
var method = context.GetType().GetMethod("ClearCache", Flags);
method.Invoke(context, null);
}