Что лучший способ состоит в том, чтобы настроить доступ к данным для проекта MVC ASP.NET?

Рассмотрим python-uinput и evdev . Пример shift+a с последним:

from evdev import uinput, ecodes as e

with uinput.UInput() as ui:
    ui.write(e.EV_KEY, e.KEY_LEFTSHIFT, 1)
    ui.write(e.EV_KEY, e.KEY_A, 1)
    ui.syn()

7
задан Ryan Skarin 22 September 2008 в 19:23
поделиться

9 ответов

Это действительно зависит, на которой технологии доступа к данным Вы используете. При использовании Linq Для Sql Вы могли бы хотеть абстрагировать далеко доступ к данным позади своего рода интерфейса "репозитория", такого как IProductRepository. Основной призыв к этому - то, что можно изменить определенную реализацию доступа к данным в любое время (такой при записи модульных тестов).

Я попытался покрыть часть этого здесь:

4
ответ дан 7 December 2019 в 01:28
поделиться

Я проверил бы видео Rob Conery на его создание витрины MVC. Ряд может быть найден здесь: Ряд Витрины MVC

Этот ряд погружается во все виды связанных с дизайном предметов, а также порядков кодирования/тестирования для использования с MVC и другими проектами.

3
ответ дан 7 December 2019 в 01:28
поделиться

В решении моего сайта у меня есть проект веб-приложения MVC и "общий" проект, который содержит мой POCOs (простые объекты C#), управляющие делами и уровни доступа к данным.

Классы DAL связываются с SQL Server (я не абстрагировал их), и возвратите POCOs управляющим делами, которых я звоню от своих контроллеров в проекте MVC.

1
ответ дан 7 December 2019 в 01:28
поделиться

Я думаю, что Архитектура Billy McCafferty S#arp является довольно хорошим примером использования ASP.NET MVC с уровнем доступа к данным (использующий NHibernate в качестве значения по умолчанию), внедрение зависимости (банкомат Ninject, но существуют планы поддерживать CommonServiceLocator), и разработка через тестирование. Платформа находится все еще в разработке, но я считаю это довольно хорошим и стабильным. С текущего выпуска должно быть немного повреждающихся изменений, пока нет финальная версия, таким образом кодирование против него должно быть хорошо.

1
ответ дан 7 December 2019 в 01:28
поделиться

Для нашего приложения я планирую использование LINQ к Объектам, но поскольку это плохо мне знакомо существует возможность, что я захочу заменить это в будущем, если это не будет работать, как я хотел бы и использовал бы что-то еще как LINQ к SQL или NHibernate, таким образом, я буду абстрагировать объекты доступа к данным в абстрактную фабрику так, чтобы реализация была скрыта от applicaiton.

Как Вы делаете Вам решать, пока Вы выбираете доказанный и хорошо знаете шаблон разработки для реализации, я думаю, что Ваш конечный продукт будет хорошо поддерживаться и устойчив.

0
ответ дан 7 December 2019 в 01:28
поделиться

Используйте LINQ. Создайте LINQ в файл SQL и перетащите все таблицы, и просматривает Вас потребность. Затем, когда Вы звоните, Ваша модель весь Ваш материал уровня CRUD создается для Вас автоволшебно.

LINQ является лучшей вещью, которую я видел в долгое долгое время. Вот некоторые простые выборки для захвата данных из блога Scott Gu.

Учебное руководство LINQ

0
ответ дан 7 December 2019 в 01:28
поделиться

Я просто сделал свой первый проект MVC, и я использовал шаблон разработки Сервисного Репозитория. Существует хороший бит информации об этом в сети прямо сейчас. Это сделало мой переход от Linq-> Sql к Платформе Объекта легкий. Если Вы думаете, что собираетесь быть изменением, много вставляет мало дополнительного усилия использовать Интерфейсы.

Я рекомендую Платформу Объекта для Вашего DAL/репозитория.

0
ответ дан 7 December 2019 в 01:28
поделиться

Проверьте Сервер Лагеря Кода для хорошего эталонного приложения, которое делает эту самую вещь и как @haacked указанный краткий обзор, который разделила липкая вещь далеко для хранения их.

0
ответ дан 7 December 2019 в 01:28
поделиться

Я сделал несколько приложений MVC и нашел структуру, которая работает очень хорошо для меня. Он основан на серии MVC Storefront Роба Конери , о которой упоминал JPrescottSanders (хотя ссылка, которую он опубликовал, неверна).

Итак, я обычно пытаюсь ограничить свои контроллеры, чтобы они содержали только логику представления. Это включает извлечение данных для передачи в представления и сопоставление данных, переданных обратно из представления в модель предметной области. Ключевым моментом является попытка сохранить бизнес-логику вне этого уровня.

С этой целью я обычно использую 3 уровня в моем приложении. Первый - это уровень представления - контроллеры. Второй - уровень обслуживания - этот уровень отвечает за выполнение сложных запросов, а также за такие вещи, как проверка. Третий уровень - это уровень репозитория - этот уровень отвечает за весь доступ к базе данных.

Таким образом, в вашем примере продуктов это будет означать, что у вас будет ProductRepository с такими методами, как GetProducts () и SaveProduct (продукт продукта). У вас также будет ProductService (который зависит от ProductRepository) с такими методами, как GetProductsForUser (пользователь-пользователь), GetProductsWithCategory (категория категории) и SaveProduct (товарный продукт). Здесь также могут происходить такие вещи, как проверка. Наконец, ваш контроллер будет зависеть от уровня обслуживания для получения и хранения продуктов.

Вы можете пропустить уровень обслуживания, но обычно вы обнаружите, что ваши контроллеры становятся очень толстыми и склонны делать слишком много. Я пробовал эту архитектуру довольно много раз, и она, как правило, неплохо работает, тем более что она очень хорошо поддерживает TDD и автоматическое тестирование.

1
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: