Вы пытаетесь построить абстракцию над типом DateTime
, что совершенно нормально.Однако, если вам требуется контекст db для выполнения вашей операции, вы должны явно принять DbContext
в качестве аргумента, чтобы указать, что ваш метод должен хотя бы прочитать его.
Вы можете написать что-то вроде этого
public static class DateTimeExtensions
{
public static bool IsSpecialOperationPermitted(this DateTime value, ApplicationDbContext context)
{
// do here your computation
}
}
С другой стороны, вы можете повернуть его вспять и расширить DbContext
:
public static class DbContentExtensions
{
public static bool IsSpecialOperationPermitted(this ApplicationDbContext context, DateTime value)
{
// do here your computation
}
}
Последнее, на мой взгляд, более понятно.
Сохранитьпомните, что методы расширения предназначены для работы с документированными побочными эффектами, а некоторые операции, которые теоретически могут быть «хорошими» в качестве методов расширения, могут в конечном итоге привести к слишком загадочным последствиям.
Кроме того, вы должны знатьчто если вызывающий имеет ожидающие изменения контекста, ваш метод не увидит их, пока вы не проверите свойство Local
.