Я «модернизирую» приложение MVC. Ранее DAL был частью Модели, как серия репозиториев (на основе имени сущности), используя стандартные запросы LINQ to SQL. Теперь это отдельный проект и создается с помощью PLINQO.Использовать шаблон хранилища при использовании данных, сгенерированных PLINQO?
Поскольку PLINQO генерирует расширения запросов на основе свойств объекта, я начал использовать их непосредственно в моем контроллере ... и полностью уничтожил репозитории.
Он работает нормально, это больше вопрос, чтобы опираться на ваш опыт, следует ли продолжать этот путь или пересобирать репозитории (используя PLINQO как DAL в файлах репозитория)?
Одним из преимуществ использования только созданного контекста данных PLINQO является то, что когда мне нужен доступ к БД, я просто делаю одну ссылку на контекст данных. В рамках шаблона репозитория мне приходилось ссылаться на каждый репозиторий, когда мне нужен доступ к данным, иногда приходится ссылаться на несколько репозиториев на одном контроллере.
Большое преимущество, которое я видел в репозиториях, было точно названо методами запросов (то есть FindAllProductsByCategoryId (int id) и т. Д.). С кодом PLINQO это _db.Product.ByCatId (int id) - что тоже неплохо.
Мне нравится обоим, но где он получает «лунь», когда запрос использует предикаты. Я могу свернуть это в метод запроса репозитория. Но в коде PLINQO это будет нечто вроде _db.Product.Where (x => x.CatId == 1 & & x.OrderId == 1); Я не уверен, что мне нравится иметь такой код в моих контроллерах.
Что вы думаете об этом?
Также ознакомьтесь с этим видео PLINQO http://www.youtube.com/watch?v=4CSXNWvFSwI –
Это хороший момент. Я создавал пользовательские расширения запросов, в основном для сценариев объединения ... но определенно мог бы построить больше. Об использовании заявления ... вот что я делаю. Все мои контроллеры получаются из пользовательского базового контроллера. Поскольку все мои контроллеры требуют доступа к базе данных, я просто обновляю DataContext в базовом контроллере. Есть ли преимущество в эффективности использования заявления? Это означало бы, что мне нужно будет использовать оператор using почти для каждого действия на каждом контроллере. – Chaddeus
Вот вам подробный ответ: http://stephenwalther.com/blog/archive/2008/08/20/asp-net-mvc-tip-34-dispose-of-your-datacontext-or-don -t.aspx :) – tdupont