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 Сервер