• Есть ли такая архитектура?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Есть несколько соображений.
    Сображение первое, глубоко теоретическое. Логическая структура конкретного приложения - это вопрос специфичный именно для приложения. Думать о ней в терминах соответствия некой теоретической "архитектуре" (тем более - "чистой архитектуре") - это самоограничение, достойное только зеленых новичков. Настоящие программисты не используют чистую архитектуру. Кароче, как вы приложение напишете, такая у него архитектура и будет. Возможно, если ваше приложение будет в чем-то замечательным, то эта архитектура войдет в учебники по этой самой архитектуре, в качестве примера (может - положительного, но, скорее, отрицательного ;-) ). Но пока что вам нужно решать практические вопросы, и шаблоны т.н. "архитектуры" могут служить только в качестве подсказки, а решать придется вам, из чисто практических соображений.

    Соображение второе, практическое. Раз, как вы пишете "Domain содержит только сущности, Enum'ы", то выбросьте из головы слово Domain, оно вас только запутывает. Потому что намекает на DDD, а то, что у вас есть, в DDD обзывают "анемичной моделью", и сильно не любят. Т.е. сейчас, с нынешней структурой приложения, DDD - оно не про вас.

    Так что, по факту, у вас есть два слоя абстракций, описывающих функции классов и методов: UI и Application. И я подозреваю, что логика приложения - классы и методы, отнесенные к Application - использует в качестве средства доступа к БД EF напрямую. То есть - что там прямо в коде используются сущности под названием DbContext и DbSet.

    А это означает, если по жизни, что от EF вы в таком раскладе никуда впоследствии не денетесь. Хорошо это или плохо - решать вам. Однако о намерении прибить гвоздями свое приложение к EF вы не упоминали и, предполагаю, не думали. Если это так, то задумайтесь именно об этом. Не о замене БД - EF может работать поверх разных БД, так что к MS SQL вы, по факту, с EF привязаны не будете (ну, разве что, сами того очень захотите).

    А задуматься надо: EF - штука неоднозначная. Она, подобно любому средству ORM, полна абстракций, которые, так скажем, не совсем хорошо ложатся на логическую структуру реляционных БД, а потому в них есть заметные дыры, через которые эта структура будет проглядывать. В частности, это нередко касается вопросов производительности.

    Но если вы выберети жизнь EF и ни с чем другим, то о Repository и UoW можете больше не думать: EF будет для вас и тем, и другим.

    Кароче, выбирайте.
    Ответ написан
    7 комментариев
  • Есть ли такая архитектура?

    то уже нет смысла ни в UnitOfWork, ни в Repository. То есть можно избавиться от Infrastructure слоя, чтобы схема была уже такая: UI, Application, Domain.

    Infrastructure слой нужен не для того чтобы заменять базу в будущем, а чтобы работа с базой не захламляла домен.
    Да и "никогда переходить не планируется" - это достаточно громкое заявление.

    Просто в случае с UnitOfWork и Repository накладывают только лишнюю нагрузку, потому что это и так реализовано в EntityFramework.

    Тогда будет усложнено тестирование, так как ты не сможешь замокать EF.
    Лучше всю работу по построению запроса тоже вынести куда-то в инфраструктурный слой - тогда и UoW и "Repository" не придётся тащить в домен.
    Ответ написан
    Комментировать
  • Как реализовать чексуммы для сетевого протокола уровня приложения?

    При использовании TCP стека (Ethernet, IP, TCP) не гарантируется сохранение целостности.

    Гарантируется.
    Ответ написан
    7 комментариев
  • Греется iPhone, почему?

    @Drno
    греется, потому что работает.
    Да, температура воздуха влияет

    снимите чехол с телефон, будет охлаждаться лучше
    Ответ написан
    5 комментариев
  • Кто нибудь может помочь оценить код (связку) на C# для игры на Unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Из за такого выравнивания это читать невозможно.
    Ответ написан
    7 комментариев
  • Вывод данных из бд в dataview?

    Посылаешь запрос, складываешь результат в DataTable. Её кладёшь в DataView.
    Ответ написан
    Комментировать
  • Какие технологии нужно изучать, чтобы быть востребованным разработчиком клиент-серверных игр и приложений?

    @oleg_ods
    Хочу стать водителем. Слышал там три педали. Какую педаль учить, а какие не используются? Еще друг рассказывал там есть повороты… Какие повороты делать, если мне для хобби, но потом хочу профессионально? Уже знаю три знака. Один круглый и два прямоугольных. Мне кажется, что этого уже хватит. Или еще один выучить? Если да, то какой? А то их там много и я боюсь выучить ненужный.

    В проекции на другую область Ваш вопрос выглядит примерно так.
    Если гуглить, то глаза разбегаются и не факт, что информация актуальна, поэтому спрашиваю тут.

    И Вы решили что тостер - это ресурс с информацией эталонной актуальности? Если что, тут сидят люди которые учились +/- по тем же статьям/книгам/ресурсам в актуальности которых Вы сомневаетесь.

    Если интересуетесь именно клиент-серверным взаимодействием, то там все довольно таки консервативно. Учите устройство сети, протоколы, сценарии их использования. А дальше, при попытке применить эти знания, будет видно чего Вам не хватает.
    Ответ написан
    2 комментария
  • Как сделать Хватание предметов как в People Playground на Unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Здраствуйте всем. Я не умею писать код и поэтому не могу сделать то что я хочу, Поэтому прошу вас

    фриланс на другом сайте. И за деньги.
    Ответ написан
    2 комментария
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Нет, оно того не стоит. Любая работа должна быть оплачена. Ибо сейчас напишешь за свой счет, а потом начальника скажет "о, отлично, молодец, можем теперь сэкономить на программистах и поддержке, у меня как раз знакомый ищет, ща его поставлю, а ты можешь быть свободен, заодно выпишу себе премию, во какой я молодец". Этот код решает задачи бизнеса. Если бизнес готов тратить на его поддержку и сопровождение деньги - то это проблемы этого бизнеса. Почему это наемный работник должен решать проблемы бизнеса за свой счет? Правильно сделать так: оформить все в виде какого-то документа с конкретными аргументами, цифрами, графиками и т.п. и выдать его начальству. Типа сейчас поддержка проекта стоит столько-то, приносит такие-то проблемы, переписать будет стоить столько-то, сопровождение нового будет столько-то, оно решает такие-то проблемы. И выдаете данный документ начальству. Можно даже в бумажном виде в нескольких экземплярах. А далее пусть у начальства голова болит.
    Ответ написан
    3 комментария
  • Стоит ли переписывать старый проект на .NET6 (на голом энтузиазме)?

    @Drno
    нет
    Ответ написан
    Комментировать
  • Каким способом лучше создать связь "сервер-клиент" в программе на C#?

    Возьми asp net core и не мучайся ни с WCF, ни с сырыми сокетами.
    Мгновенные уведомления - через SignalR
    Ответ написан
    4 комментария
  • Откуда берется новая таблица после переопределения IdentityRole?

    @oleg_ods
    У ApplicationUser и ApplicationRole связь many-to-many. Для ее обслуживания создается дополнительная таблица.

    Если хотите использовать для связи таблицу UserRoles это надо указать явно.

    Пример из документации:

    internal class MyContext : DbContext
    {
        public MyContext(DbContextOptions<MyContext> options)
            : base(options)
        {
        }
    
        public DbSet<Post> Posts { get; set; }
        public DbSet<Tag> Tags { get; set; }
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Post>()
                .HasMany(p => p.Tags)
                .WithMany(p => p.Posts)
                .UsingEntity<PostTag>(
                    j => j
                        .HasOne(pt => pt.Tag)
                        .WithMany(t => t.PostTags)
                        .HasForeignKey(pt => pt.TagId),
                    j => j
                        .HasOne(pt => pt.Post)
                        .WithMany(p => p.PostTags)
                        .HasForeignKey(pt => pt.PostId),
                    j =>
                    {
                        j.Property(pt => pt.PublicationDate).HasDefaultValueSql("CURRENT_TIMESTAMP");
                        j.HasKey(t => new { t.PostId, t.TagId });
                    });
        }
    }
    
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    
        public ICollection<Tag> Tags { get; set; }
        public List<PostTag> PostTags { get; set; }
    }
    
    public class Tag
    {
        public string TagId { get; set; }
    
        public ICollection<Post> Posts { get; set; }
        public List<PostTag> PostTags { get; set; }
    }
    
    public class PostTag
    {
        public DateTime PublicationDate { get; set; }
    
        public int PostId { get; set; }
        public Post Post { get; set; }
    
        public string TagId { get; set; }
        public Tag Tag { get; set; }
    }
    Ответ написан
    2 комментария
  • Как переопределить ToString для своего класса Date?

    freeExec
    @freeExec
    Участник OpenStreetMap
    public override string ToString()
    {
       return "Я не читаю документацию, хотя ссылку получил в предыдущем вопросе";
    }
    Ответ написан
    2 комментария
  • Как подсчитайте процент элементов в списке с LINQ?

    freeExec
    @freeExec
    Участник OpenStreetMap
    list.Take(list.Count() * 30 / 100)
    Думаю с проверкой на 100 и исключением сам сообразишь.
    Ответ написан
    Комментировать
  • Как вывести 2 переменные с функции?

    Используй кортежи.
    public static (int, double) While3(double n)
            {
                double S = 0;
                int d = 10,
                    sumd = 200,
                    days = 1;
                while (S < sumd)
                {
                    days++;
                    S += d + (d * ( n / 100));
                }
                return (days,S);
            }

    Но умоляю, дай нормальные имена переменным и самой функции.
    Ответ написан
    2 комментария
  • Как создавать несколько объектов класса в цикле?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    1С-ника видно сразу, бедняга.
    Несколько экземпляров выводи в цикле
    Ответ написан
    7 комментариев
  • Как исправить ошибку?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Вводить в верном формате, написано же.
    Ответ написан
    3 комментария
  • Как исправить ошибку?

    В какой-то момент ты ввёл в консоль число в неверном формате, о чём и сообщается в ошибке.
    В стактрейсе можно увидеть, что это произошло при вызове Convert.ToInt32 на 42й строке

    System.FormatException: Входная строка имела неверный формат.
    в System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
    в System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
    в System.Convert.ToInt32(String value)
    в Program1.Program.Main() в C:\CSAIO4D\ВК01\CH01\Program1\Program1\Program.cs:строка 42

    Чтобы чуть проще было обрабатывать подобные ошибки, используй int.TryParse, вместо Convert.ToInt32

    int.Parse и Convert.ToInt32 стоит использовать только тогда, когда ты точно знаешь, что ввод всегда будет корректным.
    Ответ написан
    Комментировать