Как сопоставить свойство с правильными столбцами базы данных с правильными значениями, используя те же преобразования, кC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сопоставить свойство с правильными столбцами базы данных с правильными значениями, используя те же преобразования, к

Сообщение Anonymous »

В моем приложении я добавляю фильтры во внешнем интерфейсе. Интерфейс получит список всех возможных значений свойства для фильтрации. Чтобы получить все возможные значения, я получаю все различные значения из столбца базы данных.

Код: Выделить всё

var possibleNames = await Article.Select(x => x.Name).Distinct().ToListAsync();
Когда фильтр выбран, его можно просто добавить в предложениеwhere.

Код: Выделить всё

var articles = await Article.Where(x => x.Name == name).ToListAsync();
Проблема в том, что не все свойства, переданные интерфейсу, являются столбцами в базе данных. Чтобы проиллюстрировать это, я привел пример для статьи.
У меня есть приложение, в котором есть 3 класса для каждой модели.
  • < li>Модель базы данных для взаимодействия с базой данных
  • Модель DTO для внутреннего использования в приложении
  • Модель представления для отправки через HTTP-запрос
Каждая модель может изменять свойства при создании.

Код: Выделить всё

Enum Type {
Magazine,
Store
}

public class ArticleDB
{
public int Id { get; set; }
public string Name { get; set; }
public int LengthInMM { get; set; }
public bool MagazineRack { get; set; }
public bool StoreRack { get; set; }

public ArticleDB(ArticleDTO dto)
{
Id = dto.Id;
Name = dto.Name;
lengthInMM = dto.LengthInMM;
MagazineRack = dto.StoredIn == Type.Magazine;
StoreRack = dto.StoredIn == Type.Store;
}

public ArticleDTO ToDTO() => new ArticleDTO()
{
Id = Id,
Name = Name,
LengthInMM = LengthInMM,
StoredIn = MagazineRack ? Type.Magazine : Type.Store
}
}

public class ArticleDTO
{
public int Id { get; set; }
public string Name { get; set; }
public int LengthInMM { get; set; }
public Type StoredIn { get; set; }
}

public class ArticleView
{
public int Id { get; set; }
public string Name { get; set; }
public int LengthInM { get; set; }
public string StoredIn { get; set; }

public ArticleView(ArticleDTO dto)
{
Id = dto.Id;
Name = dto.Name;
LengthInM = dto.LengthInMM / 1000;
StoredIn = dto.StoredIn.ToString();
}

public ArticleDTO ToDTO() => new ArticleDTO()
{
Id = Id,
Name = Name,
LengthInMM = LengthInM * 1000,
StoredIn = StoredIn == "Magazine" ? Type.Magazine : Type.Store
}
}
Является ли это чистым способом использования этих моделей для преобразования отдельных свойств в один или несколько столбцов и преобразования значения, если это необходимо, для получения возможных значений и получения отфильтрованных значений?
Прямо сейчас, если я хочу отфильтровать lengthInM, мне нужно преобразовать это значение в трех разных областях: при получении значений, при получении возможных значений, при фильтрации по значению. А для StoredIn также потребуется выполнить пользовательскую проверку в трех разных местах.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -values-us
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»