Нужен совет относительно доступа к базе данных - PullRequest
1 голос
/ 29 ноября 2009

Предположим, у меня есть класс Comment, имеющий свойства и методы как

public Comment GetComment(Guid id)

И

public static List<Comment> GetComments()
public static  List<Comment> GetCommentsByAuthor(Author id)

Теперь, что я обычно делаю, это пишу логику базы данных для каждого из вышеуказанные методы. Тем не менее, теперь я вижу код BlogEngine.NET, и он написал в этом путь; Он написал логику базы данных для метода GetComments () и извлек из него для всех остальных методов, даже для GetComment (идентификатор Guid) используя что-то вроде

   //FindAll is a method in List<T> class
    FindAll(delegate(Comment comment)
    {
    return comment.Author.Equals(author ,
    StringComparison.OrdinalIgnoreCase);
    }
    );

У меня вопрос, стоит ли делать это таким образом, а не первый подход? Любые плюсы и минусы этого пути и предложения и указатели и ресурсы приветствуются. ТИА Шринивас

1 Ответ

2 голосов
/ 29 ноября 2009

Хорошей идеей является повторное использование кода, где это возможно, а не переписывание, но это не лучший способ сделать это. Требуется извлечь все строки из базы данных и затем отфильтровать их на клиенте. Если вы используете Linq, вы можете следовать той же схеме повторного использования запросов, но фильтрация будет выполняться в базе данных, а не на клиенте, что повышает производительность.

public IQueryable<Comment> GetCommentsByAuthor(Author author) {
    return GetComments().Where(comment => comment.Author.Id == author.Id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...