@Venesuella
BlackJack и ...

Какие есть Best practice доступа к БД в C#?

Ребятки, подскажите какие Best practice использовать чтобы организовать доступ к БД ? Что лучше использовать Model First, создать объекты POCO на основании БД, а потом использовать Code First?
  • Вопрос задан
  • 954 просмотра
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C#
1) https://habrahabr.ru/company/microsoft/blog/101121/
Команда EF разъясняет, что Code First – не совсем корректное имя, и его не совсем правильно понимают. Правильнее было бы назвать Modeling using Code. Когда мы описываем модель непосредственно в C# коде, то разработчик код лучше всего понимает. Графический интерфейс Visual Studio теперь будет работать именно с Code First, а edmx более не поддерживается.

Ну т.е. вроде понятно, что использовать в новых проектах.
2) используйте репозиторий: codereview.stackexchange.com/questions/57401/repos... , только прошу вас, не делайте методов, принимающих Expression и возвращающих IQueryable - такой "репозиторий" совершенно не нужен и никак ничего не абстрагирует, а только вредит. Делайте методы на каждый конкретный тип запроса, принимающие конкретные ограничения для поиска, и возвращающие IEnumerable. Такие методы реально протестировать, и вы не получите дырявую абстракцию, которая будет выдавать вам внезапно ошибки в рантайме при нестандартных запросах на выборку сущностей. И самое главное - вы не будете зависеть от конкретной ORM.
3) не забывайте, что никуда не девался ADO.NET и другие ORM, толстые например NHibernate, и не очень. Если вы в вашем приложении делаете к базе два запроса на вставку (какой-нибудь сервис телеметрии), ни к чему городить огород с ORM. Или если у вас олдскульная база с большим количеством хранимых процедур на сервере, то толстая ORM также ни к чему (какой-нибудь биллинг например).

Если что еще вспомню, напишу.
Ответ написан
@andea23
>Что лучше использовать Model First, создать объекты POCO на основании БД, а потом использовать Code First?

ты же ведь понимаешь, что это будет зависеть от конкретных задач?

professorweb.ru/my/entity-framework/6/level1
metanit.com/sharp/adonet
https://geekbrains.ru/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы