Какой уровень доступа к данным рекомендуется сегодня для ASP.net?
В настоящее время я создаю небольшой веб-сайт, на котором я записываю возникающие проблемы и ответы на них, чтобы другие могли их увидеть. В настоящее время я использую DAL, очень похожий на описанный здесь. Сейчас я смотрю на другие модели, в частности на модели linq, использующие Linq2SQL и инфраструктуру ADO.net Entries. Я понимаю, что каким-то образом перемещаю доступ к данным на уровне кода, так как затем фильтрую, например, топлист с запросами linq. Причина, по которой я начал это делать, заключалась в том, что DAL на самом деле не синхронизировался с БД все время, и обнуляемые типы стали не обнуляемыми, когда я что-то изменил в БД. Тогда, если бы я снова импортировал таблицы в таблицу данных, мои запросы были бы потеряны.
Мой простой вопрос: если вы хотите получить хороший DAL для ASP.net сегодня, что бы это было? Предложения, опыт более чем приветствуются.
3 ответа
Я лично предпочитаю LINQ для SQL и ADO.NET Entity Framework. Ребята из Microsoft также используют эти технологии в своих последних проектах (например, посмотрите на проект KOBE). Таким образом, Microsoft рекомендует эти два, а также.
Хотя... иногда я использую блок Data Access Application из Enterprise Library и ручное кодирование DAL, когда мне нужен максимальный контроль над его функциональностью и реализацией.
Другие альтернативы: NHibernate, SubSonic, другие решения ORM, такие как LLBLGen Pro.
Великие книги на эту тему:
- Pro LINQ: языковой интегрированный запрос в C# 2008 от Джозефа С. Ратца
- LINQ в действии Фабрис Маргери
- Программирование Entity Framework Джулией Лерман
- ADM.NET 3.5, LINQ и Entity Framework от VB 2008 от Murach. Автор - Анна Бём.
Связанные инструменты:
- LINQPad также является отличным способом изучения LINQ: он поставляется с 200 примерами из книги, C# 3.0 в двух словах. Нет лучшего способа почувствовать крутость LINQ и функционального программирования.
Есть много вариантов, и каждый из них может оказаться лучше в зависимости от ваших конкретных обстоятельств. Некоторые варианты включают в себя:
- LINQ to SQL
- ADO.NET Entity Framework
- NHibernate
- SubSonic
- Написание одного вручную:)
Мой выбор по умолчанию - LINQ to SQL. Это полностью личное предпочтение, хотя. Многие ребята являются сторонниками NHibernate.
Я использую OPF3 для моего текущего проекта, в основном потому, что он имеет отличную поддержку Pervasive.SQL v9.5. Поддержка также фантастическая.