Я работаю в проекте MVC3, и я использую LINQ to SQL. У меня есть схема базы данных, которая использует поле, чтобы указать, активна ли запись или удалена (поле имеет логическое имя «Активный»).
Теперь предположим, что есть две связанные таблицы, такие как State и City, где City ссылается на State.
Допустим, у меня есть метод, который возвращает список состояний:
public ActionResult ListStates()
{
return View(_repository.ListStates());
}
Теперь я реализовал метод репозитория для возврата всех состояний и мог бы реализовать его следующим образом:
public class Repository
{
public IQueryable<State> ListStates()
{
return dataContext.States.Where(p => p.Active == true)
}
}
По мнению, я могу быть уверен, что использую только активные состояния. Но чтобы быть уверенным, что я использую только активные города, мне нужно отфильтровать его в представлении, что делает представление более уродливым, или реализовать собственную модель представления. Оба случая действительны, но они требуют много работы.
Я видел, что в контексте данных есть методы, в которых мы можем реализовать определенные операции до того, как объект будет вставлен / обновлен в базе данных, например:
public partial class DatabaseDataContext
{
partial void InsertState(State instance)
{
instance.Active = true;
this.ExecuteDynamicInsert(instance);
}
}
Вышеуказанный метод выполняется всякий раз, когда происходит вставка объекта State.
У меня вопрос, есть ли способ реализовать условие только в одном месте для объекта, например, возвращать только активные записи всякий раз, когда выполняется выбор?