Существуют ли существующие слои данных, которые я могу использовать для создаваемого приложения? - PullRequest
3 голосов
/ 16 июля 2010

Я пишу приложение .NET, и мысль о создании слоя данных с нуля мне не по себе. (Под уровнем данных я имею в виду код, который обращается к базе данных, а не уровень, который абстрагирует доступ к базе данных в объекты домена [иногда называемый уровнем доступа к данным и используемый взаимозаменяемо с уровнем данных].)

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

Мне не важно, находится ли библиотека в C # или VB.NET, и мне все равно, является ли она LINQ или ADO.NET. Пока это работает.

** Хочу подчеркнуть, что я не ищу технологии или механизмы доступа к данным (например, LINQ, инструменты ORM и т. Д.), А скорее существующие библиотеки.)

Ответы [ 6 ]

5 голосов
/ 16 июля 2010

Если вы говорите только с SQL Server, Linq to SQL - ваш лучший вариант. Это довольно легко начать работать. Вы получите и уровень данных и абстракцию. Все, что вам нужно сделать, это предоставить строку подключения к Linq to SQL, и он обработает все остальное.

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

NHibernate требует чуть больше работы, чем Linq to SQL, чтобы начать работу. MS предоставила в Visual Studio хороший инструмент, который поможет вам быстро читать из базы данных SQL.

2 голосов
/ 16 июля 2010

Честно говоря, такой же фанат, как я всегда был с NHibernate.С последней версией Enterprise Library 5 Data Access Block , которую они добавили в поддержку динамического отображения, изначально.Я бы настоятельно рекомендовал не использовать NHibernate в проекте и вместо этого использовать инструмент прямого генерирования базы данных из моих доменных объектов для создания моей базы данных (возможно, даже использовать NHibernate исключительно для экспорта схемы) или что-то вроде CodeSmith и использовать EntLib.

1 голос
/ 16 июля 2010

Microsoft Entity Framework может быть тем, что вы ищете, чтобы освободить вас от написания "кода, который обращается к базе данных".

Самое приятное то, что он уже поставляется с Visual Studio и - в зависимости от ваших требований - вы можете использовать большинство функциональных возможностей "из коробки" или вручную настроить его в соответствии со своей собственной бизнес-логикой с помощью шаблонов T4.

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

Я начал использовать его 3 месяца назад в моем текущем проекте на работе, который состоит из нескольких окон и служб WCF для преобразования сторонних данных в нашу собственную схему базы данных. Исходя из нашего опыта, мы будем использовать EF в будущем намного больше.

1 голос
/ 16 июля 2010

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

Возможно, стоит проверить Дозвуковой .Хотя я лично нахожу это довольно ограниченным, это, конечно, не ORM, а «инструмент запросов».Это сделает операции CRUD простыми и понятными и генерирует частичные классы POCO для каждой таблицы в вашей базе данных, вместо того, чтобы пытаться отобразить базу данных на слой домена.

1 голос
/ 16 июля 2010

Вы можете использовать easyobjects имеет очень маленькую кривую обучения и очень расширяемо.Из их сети:

EasyObjects.NET - это мощная архитектура доступа к данным для .NET Framework.При использовании в сочетании с генерацией кода вы можете с нуля создать полный слой данных для своего приложения за считанные минуты.

0 голосов
/ 16 июля 2010

Что вы ожидаете от этой структуры с вашими исключениями? Если он не может подключиться к вашей базе данных, что он должен делать - вывести приложение из строя, показать сообщение об ошибке (winforms или WPF или ASP) ... вопросы бесконечны.

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

Прямой ответ на ваш вопрос о «существующей реализации универсального уровня данных, которая обеспечивает стандартную функциональность crud, обработку ошибок, управление соединениями - работает» прост: использование ADO.NET . Ответы, которые все остальные предоставили, на самом деле выходят за пределы этой функциональности, но ваши ответы предполагают, что вы думаете, что есть что-то еще за пределами - что-то, что реализует ваш уровень данных для вас. Я предполагаю, что то, что вы ищете, вероятно, не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...