Рефакторинг класса C # - PullRequest
0 голосов
/ 20 июля 2010

В настоящее время я работаю над локальным приложением, которое имеет доступ к SQL Server 2008 Express.Я создал класс, который управляет всем доступом и действиями над базой данных (например, INSERT, DELETE и т. Д.), Но класс становится действительно большим и имеет как минимум 40 методов.Поэтому мой вопрос был: есть ли способ реорганизовать этот класс?или это нормально?

Ответы [ 3 ]

10 голосов
/ 20 июля 2010

Да, он называется Object-Relational-Mapping слой или сокращенно ORM.

В частности, я бы рекомендовал взглянуть на Linq To SQL, так как это хорошее простое введение.,Вы в значительной степени добавляете новый объект «Linq to SQL Classes» из Add->New Item->Data (назовите его DB.dbml), переходите к View->Server Explorer (укажите настройки сервера SQL), перетаскиваете свои таблицы SQL в окно конструктора, строите изатем можете получить доступ к вашей базе данных как объекты в коде:

DBDataContext db = new DBDataContext();
var cars = db.Cars.Where(c => c.Name == "Ford Falcon");
3 голосов
/ 20 июля 2010

Вы можете попробовать эти библиотеки ORM для .NET:

  • BLToolkit -> это довольно простая библиотека, чтобы начать играть с ORM, очень легко начать с
  • Linq2Sql ->Эта библиотека - мертвый проект, Microsoft прекратила его разработку, и я думаю, что не стоит использовать «мертвую» технологию
  • Entity Framework -> хорошая точка для начала, есть и простой мастер для создания начальнойМодель с необходимыми сопоставлениями таблиц (просто установите ее и создайте «Новый проект сущности», мастер поможет вам создать ваши первые сопоставления)
  • NHibernate -> это своего рода библиотека отображения «монстр» ORM, немного сложная, но одна из самых продвинутых библиотек на рынке .NET ORM
2 голосов
/ 20 июля 2010

Linq to Entities сделает все это за вас.Рассматривали ли вы этот вариант?

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

...