Шаблоны разработки Уровня доступа к данным

Что это может быть отключено.

13
задан Mark Seemann 28 June 2009 в 21:33
поделиться

7 ответов

Я рекомендую «Шаблоны архитектуры корпоративных приложений» Мартина Фаулера.

Список шаблонов также есть на его веб-сайте

Шаблон DataMapper - это тоже актуально.

12
ответ дан 1 December 2019 в 21:38
поделиться

Мне нравится использовать доступ к базе данных на основе интерфейса. Каждый поставщик db для Ado.net реализует базовые интерфейсы, и когда вы их используете, ваш код может выглядеть следующим образом:

public static IDbConnection GetConnection(string connectionName)
{
  ConnectionStringSettings ConnectString = ConfigurationManager.ConnectionStrings[connectionName];
  DbProviderFactory Factory = DbProviderFactories.GetFactory(ConnectString.ProviderName);
  IDbConnection Connection = Factory.CreateConnection();
  Connection.ConnectionString = ConnectString.ConnectionString;
  return Connection;
}

Затем, когда вам нужно связаться с db:

public static DataTable Dummy()
{
  using (IDbConnection Connection = GetConnection("SiteSqlServer"))
  {
    IDbCommand Command = Connection.CreateCommand();
    Command.CommandText = "DummyCommand";
    Command.CommandType = CommandType.StoredProcedure;

    Connection.Open();

    using (IDataReader reader = Command.ExecuteReader())
    {
      DataTable Result = new DataTable();
      Result.Load(reader);
      return Result;
    }
  }
}

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

8
ответ дан 1 December 2019 в 21:38
поделиться

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

0
ответ дан 1 December 2019 в 21:38
поделиться

NHibernate предназначен для обработки такого рода сценариев, если вы хотите его изучить

0
ответ дан 1 December 2019 в 21:38
поделиться

Самым простым решением было бы использовать ORM. Ознакомьтесь с LLBLGen. Используя модель адаптера, вы можете переключаться между поставщиками данных, используя одни и те же бизнес-объекты. Он может генерировать код как для MySql, так и для Sql Server.

2
ответ дан 1 December 2019 в 21:38
поделиться

В общем, я разделяю рекомендацию Джона Нолана Шаблоны архитектуры корпоративных приложений .

В частности, я всегда рекомендую вам скрывать свой уровень доступа к данным за интерфейса и использовать внедрение зависимостей для внедрения определенного компонента доступа к данным в логику домена во время выполнения.

Вы можете использовать контейнер внедрения зависимостей или сделать это вручную .

С технологической стороны я рекомендовал бы Microsoft Entity Framework , поскольку ваши потребности в доступе к данным, похоже, ограничиваются реляционными базами данных. Entity Framework является официальным OR / M Microsoft и имеет поставщиков для многих различных СУБД, а также поддерживает LINQ.

2
ответ дан 1 December 2019 в 21:38
поделиться

Это действительно зависит от размера вашего слоя и типа продукта, который вы разрабатываете. Если он достаточно хорошо сдержан, то ADO.NET, вероятно, будет идеальным вариантом. Если это более крупный слой DAL и его разработка с нуля многоцелевых баз данных, лучше всего использовать инструмент ORM. Это быстрые, эффективные и зрелые продукты, которые позволяют быстро перенастроить на другой БД, просто изменив один параметр. Написание статического ADO - это то, что уходит в наследство.

Есть несколько инструментов ORM, которые могут выполнять эту работу, но все они работают немного по-разному и зависят от от вашего бюджета, размера вашей команды и т. д. Они могут работать либо путем написания класса сопоставления, такого как NHibernate, либо через отражение, то есть разметку атрибутов.

Бесплатно, то есть с открытым исходным кодом, если ваша оболочка, NHibernate идеальна . В настоящий момент я использую это для создания слоя DAL для крупного корпоративного продукта. Это отлично, но нужно время, чтобы освоить. С помощью NHibernate вы определяете классы сопоставления, которые при выполнении генерируют для вас модель db. Он поддерживает хранимые процедуры. Обратной стороной является то, что на обучение требуется некоторое время, особенно для правильного отображения сложных данных. Это отлично. Он имеет огромное количество образцов и других проектов, которые его использовали. Посетите Koders.com.

Если у вас небольшой бюджет, то LLBLGen - идеальный вариант. Он строго типизирован и поддерживает хранимые процедуры.

Если у вас уже есть некоторые модели данных, то TierDeveloper - идеальный вариант. По сути, он бесплатный и работает путем разработки набора классов из вашей модели базы данных. Единственным недостатком является то, что сопоставитель для mysql является сторонним. Это продукт корпоративного класса, который был освобожден для поддержки ncache и его возможного подхода.

Если вы отчаянно пытаетесь придерживаться MS, они переходят на ORM и имеют продукт под названием ADO.NET Entity Framework. Функционально это не так полно, как инструменты, определенные выше. Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

В идеале лучше всего использовать ORM. Если вы не можете поддерживать открытый исходный код и имеете бюджет, тогда TierDeveloper идеально подходит. По сути, он бесплатный и работает путем разработки набора классов из вашей модели базы данных. Единственным недостатком является то, что сопоставитель для mysql является сторонним. Это продукт корпоративного класса, который был освобожден для поддержки ncache и его возможного подхода.

Если вы отчаянно пытаетесь придерживаться MS, они переходят на ORM и имеют продукт под названием ADO.NET Entity Framework. Функционально это не так полно, как инструменты, определенные выше. Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

В идеале лучше всего использовать ORM. Если вы не можете поддерживать открытый исходный код и имеете бюджет, тогда TierDeveloper идеально подходит. По сути, он бесплатный и работает путем разработки набора классов из вашей модели базы данных. Единственным недостатком является то, что сопоставитель для mysql является сторонним. Это продукт корпоративного класса, который был освобожден для поддержки ncache и его возможного подхода.

Если вы отчаянно пытаетесь придерживаться MS, они переходят на ORM и имеют продукт под названием ADO.NET Entity Framework. Функционально это не так полно, как инструменты, определенные выше. Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

В идеале лучше всего использовать ORM. Если вы не можете поддерживать открытый исходный код и имеете бюджет, и работает путем разработки набора классов из вашей модели базы данных. Единственным недостатком является то, что сопоставитель для mysql является сторонним. Это продукт корпоративного класса, который был освобожден для поддержки ncache и его возможного подхода.

Если вы отчаянно пытаетесь придерживаться MS, они переходят на ORM и имеют продукт под названием ADO.NET Entity Framework. Функционально это не так полно, как инструменты, определенные выше. Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

В идеале лучше всего использовать ORM. Если вы не можете поддерживать открытый исходный код и имеете бюджет, и работает путем разработки набора классов из вашей модели базы данных. Единственным недостатком является то, что сопоставитель для mysql является сторонним. Это продукт корпоративного класса, который был освобожден для поддержки ncache и его возможного подхода.

Если вы отчаянно пытаетесь придерживаться MS, они переходят на ORM и имеют продукт под названием ADO.NET Entity Framework. Функционально это не так полно, как инструменты, определенные выше. Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

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

Если вы отчаянно пытаетесь придерживаться MS, они переходят на ORM и имеют продукт под названием ADO.NET Entity Framework. Функционально это не так полно, как инструменты, определенные выше. Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

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

Если вы отчаянно пытаетесь придерживаться MS, они переходят на ORM и имеют продукт под названием ADO.NET Entity Framework. Функционально это не так полно, как инструменты, определенные выше. Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

В идеале лучше всего использовать ORM. Если вы не можете поддерживать открытый исходный код и имеете бюджет, Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

В идеале лучше всего использовать ORM. Если вы не можете поддерживать открытый исходный код и имеете бюджет, Его примерно на 3 поколения отстают в зрелости. Он доступен в версии vs 2008 sp1. Соединитель для mysql будет стоить дорого.

Кроме того, вы можете использовать LINQ. Он также будет нацелен на mysql, если вам также понадобится соединитель.

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

Надеюсь, что это поможет.

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

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