DAL (Data Access Layer) лучшие практики - PullRequest
0 голосов
/ 14 февраля 2020

Outline

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

В настоящее время я смотрю на свой код и начинаю ощущать «странный запах кода» при написании кода, взаимодействующего с объектом БД.

Используя существующую модель, я хотел бы иметь возможность использовать хранилище (CRUD) logi c для управления хранилищем этих моделей в БД. Используя методологию, аналогичную методике EntityFramework, вы можете определить информацию DataColumn через атрибут в определении модели. Лично я бы предпочел инкапсулировать logi c в отдельных случаях. Модель не должна знать, как она хранится, все, что нужно знать DAL, - это как управлять информацией в источнике хранения данных (в моем случае SQL Server) / обращаться к ней.

привели к тому, что репозитории либо динамически генерировали запросы (с множеством предположений), либо создавали сценарии SQL в DAL, которые используются для извлечения объектов из БД через объект Crud / Repository.

Я открыт для альтернативных предложений.


Моя текущая методология:

Редактировать : В настоящее время используется Dapper

Реальная реализация модели> Абстрактная реализация> Интерфейс для доступа на основе Crud. В реализации Actual Model мы определяем Sql сценарии для каждого случая и используем интерполированные строки с переопределениями имен для управления

    public class model
{
     public GUID TargetId;
     public string MyName;
}

В RepositoryModel

"Select ID,Name from TableA"

становится

$"Select ID as [{nameof(model.TargetId)}], Name as [{nameof(model.MyName)}] from TableA"

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

Идеальный TechStack: C#> Sql Сервер

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