2011-01-05 3 views
3

У меня есть SQL-сервер db, готовый с простыми (не так много ограничений) таблицами. Теперь мне нужно создать классы DAL и классы для таблиц.Необходимая помощь .NET ORM

Сколько может .NET ORM (например, NHibernate или любой другой бесплатный FW)? В основном помогает с трудоемкими задачами написания функций доступа класса и db. Я лучше потрачу время на создание бизнес-логики для этих классов объектов.

Будет ли легко добавлять/изменять таблицы позже? У меня есть концептуальное представление об ORM, но нет практического опыта в использовании каких-либо.

ответ

3

Вы можете использовать Linq to Sql или Entity Framework для автоматического создания классов, а также для доступа к данным.

Вы можете перетащить свои таблицы базы данных в DBML (L2S) или EDMX (EF) из Visual Studio, и он будет строить ваши классы с членами, сопоставленными один на один со столбцами, а также любые отношения, которые вы определили.

Чтобы создать Linq to Sql Classes или ADO.NET Entity Data Model выполните следующие действия:

  • правой кнопкой мыши в Visual Studio на одном из проектов
  • Add => New Item
  • Выберите Linq to Sql Classes или ADO.NET Entity Data Model
  • Это будет создайте пустой дизайн для создания и настройки ваших классов.
  • Server Explorer, чтобы открыть соединение с вашей базой данных
  • Перетаскивание столов на холст DBML или EDMX и сохранение при завершении.

Например:

  • стол User становится класс User
  • Если таблица User имеет столбец FirstName он становится собственностью FirstName
  • Если таблица User имеет отношения с таблицей Contact он будет генерировать IList<Contact> Contacts на ваш класс User. Это позволит вам писать код, как user.Contacts.Where(c => c.ContactId == 7000) внутри сгенерированного DataContext

Если вам нужен более настроенный способ отображения таблиц вы можете использовать SQLMetal, который также будет генерировать классы, но позволят вам внести изменения.Например, преобразование int свойств в enums.


NHibernate также хороший вариант, и проделал длинный путь.

+0

перетащить в DBML? где вариант DBML в VS.few, были бы полезны прямые шаги, чтобы следовать. –

+0

см. Обновления .... – hunter

1

Есть много инструментов, которые будут генерировать DAL для вас.

SubSonic не ORM, а инструмент генерации кода, который будет генерировать DAL для вас.

Существует Entity Framework и Linq to SQL (от Microsoft), который также будет генерировать DAL для вас, с дизайнерской поверхностью в визуальной студии.

Со всеми этими добавлениями и изменениями таблиц требуется восстановление DAL, поэтому изменения и настройки этих файлов могут быть потеряны.

+0

SubSonic - это ORM. Можно изменить базу данных без потери изменений на стороне кода, если вы правильно используете такие вещи, как частичные классы. –

1

Оба Linq2Sql и Entity framework могут помочь вам в этом в значительной степени. Что касается вашего вопроса об обновлении таблиц: Да, обновление таблиц довольно легко. По крайней мере, намного проще, чем если бы вы написали все вручную (где вам тоже пришлось бы делать изменения вручную).

+0

Есть много кривой обучения или я могу просто начать использовать?Как генерировать классы и DAL с linq2sql (он выглядит проще, чем EF), дает ли он какой-либо инструмент? –

+1

@Munish Goyal: Я не думаю, что кривая обучения очень крутая. Да, есть инструмент. Вы просто перетаскиваете свои таблицы в визуальной студии. Все, что вам нужно сделать, это добавить в свой проект «классы данных Linq2Sql» и начать перетаскивать таблицы из «server explorer». легкий как это. –

+0

Файл "Linq2Sql data classes"? .cs файл или шаблон? подробно. wud be helpful –

0

Nhibernate будет обрабатывать всю вашу логику доступа к данным. Я рекомендую вам определить каждый внешний ключ и первичный ключ, который вы можете. Также проще иметь явный первичный ключ вместо составного первичного ключа.

Чтобы сгенерировать классы объектов, я рекомендую использовать шаблоны T4. Существуют различные образцы шаблонов, доступных в Интернете, и довольно просто написать свой собственный, чтобы делать именно то, что вы хотите.

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

0

Я немного опаздываю, но Cocoon ORM на Nuget и Github хорош. Он динамически записывает код доступа к данным. http://guidelinetech.github.io/cocoon-orm/

Список функций ниже с сайта:

  • Автоотображение полей базы данных в свойствах объекта домена
  • AutoCrud с автоматическим Join создание на ГЭТ (выберите)
  • Автоотображение объекта домена свойства параметров хранимой процедуры
  • Динамически создает легко проверять параметризованный SQL, который является планом выполнения и кэш-память
  • Использует простой d ата аннотации подобных тому, что в Entity Framework
  • регрессии и бенчмаркинг инструментов для действительно параноика (как мы)
  • средства генерации Таблицы для использования в кодовой первой среде
  • средство генерации класса для использования в коде второй среды
  • Легко создавать нецелые последовательные уникальные идентификаторы с использованием встроенного гребенчатого GUID или генератора последовательного UID.
  • Совместимость с SQL Server 2008/2012/20014/+ и Azure SQL (работоспособным с другими базами данных TSQL)
  • Используйте библиотеки кокон ОРМ в свой собственный проприетарный код под слабой копилефт лицензии LGPL (изменения в сам должен Кокон ОРМ . Сообщите нам, чтобы мы могли соединить мозг вместе!)
Смежные вопросы