Что мне сделать, чтобы соблюдать чистую четырехуровневую архитектуру?C#

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

Сообщение Anonymous »

Я пытаюсь создать приложение, в котором пользователи смогут добавлять музыку и голосовать за нее.
Я пытаюсь сделать так, чтобы оно отказывалось вставлять музыку в базу данных, если в нем уже существует файл с таким же названием и автором. Я хочу, чтобы он выдавал исключение, говорящее: «Музыка с таким же названием и тем же автором уже существует».
Пока это работает, выдавая исключение, когда обнаруживается уникальное ограничение по названию и автору в базе данных не работает, но я все еще сомневаюсь, что все на своих местах.
Вот что у меня пока:
Music.cs (домен):

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

namespace Domain;

public partial class Music
{
public int Id { get; set; }

public string Title { get; set; } = null!;

public string Author { get; set; } = null!;

public string Type { get; set; } = null!;

public string YoutubeUrl { get; set; } = null!;

public int UserId { get; set; }

public virtual User User { get; set; } = null!;

public virtual ICollection Votes { get; set; } = new List();
}
UseCaseCreateMusic.cs:

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

using Application.UseCases.Music.Dtos;
using Application.UseCases.Utils;
using AutoMapper;
using Infrastructure.Repositories;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;

namespace Application.UseCases.Music;

public class UseCaseCreateMusic : IUseCaseWriter
{
private readonly IMusicRepository _musicRepository;
private readonly IMapper _mapper;

public UseCaseCreateMusic(IMusicRepository musicRepository, IMapper mapper)
{
_musicRepository = musicRepository;
_mapper = mapper;
}

public DtoOutputMusic Execute(DtoInputMusic input)
{
var music = _mapper.Map(input);

try
{

var dbMusic = _musicRepository.Create(music.Title, music.Author, music.Type, music.YoutubeUrl, music.UserId);
return _mapper.Map(dbMusic);
}
catch (DbUpdateException ex) when (ex.InnerException is SqlException sqlEx && sqlEx.Number == 2627)
{
throw new InvalidOperationException("A music with the same title and same author already exists.", ex);
}
catch (Exception ex)
{
throw new InvalidOperationException($"An error occurred: {ex.Message}");
}
}
}
DtoInputMusic.cs (Приложение):

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

using System.ComponentModel.DataAnnotations;

namespace Application.UseCases.Music.Dtos;

public class DtoInputMusic
{
[StringLength(100, MinimumLength = 2)]
[Required]
public string Title { get; set; }
[StringLength(100, MinimumLength = 2)]
[Required]
public string Author { get; set; }
[StringLength(50, MinimumLength = 2)]
[Required]
public string Type { get; set; }
[RegularExpression(@"^(https?\:\/\/)?(www\.youtube\.com|youtu\.be)\/.+$")]
[Required]
[StringLength(500)]
public string YoutubeUrl { get; set; }
[Required]
public int UserId { get; set; }
}
Я просто не уверен, нужно ли мне создавать метод бизнес-логики (например, CheckIfMusicExists) в классе Music, потому что он не будет работать без нарушения правила зависимости .
Можете ли вы меня просветить?
Заранее спасибо за помощь.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Что мне сделать, чтобы соблюдать чистую четырехуровневую архитектуру?
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Программа Java, использующая чистую архитектуру, DAO и репозиторий
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Программа Java, использующая чистую архитектуру, DAO и репозиторий
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Программа Java, использующая чистую архитектуру, DAO и репозиторий
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Не удалось отправить мой веб-API ASP.NET Core 8 в Azure; Я использую чистую архитектуру, поэтому все мои сервисы зарегис
    Anonymous » » в форуме C#
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

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