Автоматическое создание DAL в приложении ASP.NET - PullRequest
2 голосов
/ 28 октября 2009

Учитывая хранимую процедуру, есть ли способ автоматически генерировать слой доступа к данным? Я понимаю, что это можно сделать с помощью Codesmith, создав шаблоны cs, но мне было интересно, есть ли бесплатное / платное решение там.

План для архитектуры:

Код ASP.NET позади -> Бизнес-уровень -> Уровень доступа к данным -> Хранимая процедура.

Слой BL действует как проход к DAL и может также генерироваться автоматически.

Любые советы / советы действительно приветствуются!

Ответы [ 6 ]

2 голосов
/ 28 октября 2009

Просто используйте Entity Framework:
http://msdn.microsoft.com/en-us/library/bb399203.aspx

1 голос
/ 28 октября 2009

Entity Framework в его текущей форме не является началом хранимых процедур. Просто нужно слишком много ручной работы, чтобы каждая хранимая процедура работала. Хотя я не могу говорить за .net 4 Entity Framework.

LINQ to SQL очень удобен для работы с хранением. Запустите SQLMETAL с параметром / procs, чтобы он автоматически генерировал ваш DAL.

Два ограничения:

  1. LINQ to SQL не будет запускать хранимые процессы, использующие динамический SQL.
  2. LINQ to SQL также не будет запускать хранимые процедуры, которые возвращают данные из временных таблиц.

Очевидной первой причиной является то, что LINQ to SQL не может генерировать необходимые метаданные для этих потоков, но динамический SQL в хранимых процессах в любом случае является плохой практикой.

1 голос
/ 28 октября 2009

Я пока не предлагаю вам использовать Entity Framework, так как он все еще имеет много особенностей. После официального выпуска .NET 4.0 у вас будет Entity Framework 4.0. В этом выпуске я, вероятно, откажусь от NHibernate и LINQ to SQL (у обоих очень разные роли) и просто использую EF, поскольку он имеет простоту использования LINQ to SQL и гибкость NH.

На данный момент я предлагаю вам использовать LINQ to SQL, поскольку его очень легко запустить и запустить, и большую часть времени он просто работает!

0 голосов
/ 28 октября 2009

Проверьте этот список самых известных инструментов ORM ".Net"

0 голосов
/ 28 октября 2009

Еще один голос за платформу Entity, хотя это будет зависеть от базовой структуры таблицы, а не от хранимой процедуры. Я не знаю, как позволить Entity Framework определять структуру классов на основе сохраненных выходных данных процесса.

Я определил, что наш лучший подход - это вручную кодировать наши классы и хранимые процедуры CRUD. Многие будут спорить с этим решением, но по моему опыту использование любого вида инфраструктуры ORM приводит к неоптимальному SQL, который ограничен, особенно с учетом возможностей использования хранимых процедур, которые среда будет блокировать.

Клише существуют по причине: если вы хотите, чтобы все было сделано правильно, сделайте это сами. Чем больше сторонних компонентов вы вводите в свое приложение, тем больше проблем, которые вы просите решить, не находятся под вашим непосредственным контролем. Я ненавижу подписываться на синдром «Не изобретено-здесь», но это один из случаев, когда я считаю, что он действителен.

0 голосов
/ 28 октября 2009

Linq2SQL или SubSonic хорошо работают для этой цели.

Редактирование: Linq2Sql предположительно "мертв", но все еще весьма полезен в его текущей форме.Я просто не буду вкладывать в это долгосрочные инвестиции.

...