powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Type
196 сообщений из 196, показаны все 8 страниц
Type
    #39331188
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как подставить тип document в IMongoCollection<T> ?
...
Рейтинг: 0 / 0
Type
    #39331218
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

Не понял, что хочешь сделать? Что не получается?
...
Рейтинг: 0 / 0
Type
    #39331220
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_max,

Не понял, что хочешь сделать? Что не получается?
сейчас стоит IMongoCollection<Request> зашито под конкретный класс,
а я хочу сделать универсально, подставлять класс в IMongoCollection в зависимости от типа переменной document.
...
Рейтинг: 0 / 0
Type
    #39331265
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxсейчас стоит IMongoCollection<Request> зашито под конкретный класс,

Оно не «зашито», они известно на этапе компиляции, со всеми вытекающими плюшками, типа проверки типов, интеллисенса, статического выбора логики на основе известного типа.


mr_maxа я хочу сделать универсально, подставлять класс в IMongoCollection в зависимости от типа переменной document.

Generic-тип можно состряпать во время исполнения. Но имеет ли это смысл? Ни интеллисенса, ни статической проверки типов, ни других плюшек от шаблонов ты не получишь. Зачем? Покажи, для чего конкретно тебе это надо.
...
Рейтинг: 0 / 0
Type
    #39331272
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_maxсейчас стоит IMongoCollection<Request> зашито под конкретный класс,

Оно не «зашито», они известно на этапе компиляции, со всеми вытекающими плюшками, типа проверки типов, интеллисенса, статического выбора логики на основе известного типа.


mr_maxа я хочу сделать универсально, подставлять класс в IMongoCollection в зависимости от типа переменной document.

Generic-тип можно состряпать во время исполнения. Но имеет ли это смысл? Ни интеллисенса, ни статической проверки типов, ни других плюшек от шаблонов ты не получишь. Зачем? Покажи, для чего конкретно тебе это надо.
Т.е. мой вариант не так уж и плох?

Мне это нужно для генерация ИД для монги.
И эту функцию могут вызывать разные коллекции.
...
Рейтинг: 0 / 0
Type
    #39331303
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,
Код: c#
1.
2.
3.
4.
 public object GenerateId<T>(IMongoCollection<T> container)
        {
            .....
        }



P. S. есть же возможность вставлять нормальный C# код.
...
Рейтинг: 0 / 0
Type
    #39331331
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВmr_max,
Код: c#
1.
2.
3.
4.
 public object GenerateId<T>(IMongoCollection<T> container)
        {
            .....
        }



P. S. есть же возможность вставлять нормальный C# код.

Я наследуюсь от этого интерфейса, там нет этого метода
...
Рейтинг: 0 / 0
Type
    #39331358
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,
Открой для себя методы расширения .
P. S. ну ёлы палы, научись вставлять форматированный C# код, который можно будет скопировать!
...
Рейтинг: 0 / 0
Type
    #39331366
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВmr_max,
Открой для себя методы расширения .
P. S. ну ёлы палы, научись вставлять форматированный C# код, который можно будет скопировать!
Дело в том, что монга использует этом метод для генерации Id, она не будет мой использовать.

Код: c#
1.
2.
3.
4.
 
public object GenerateId(object container, object document)
{
}
...
Рейтинг: 0 / 0
Type
    #39331427
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxМне это нужно для генерация ИД для монги.
И эту функцию могут вызывать разные коллекции.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public object GenerateId<T>(object container, object document)
{
    if(document is T)
    {
       var context = ((IMongoCollection<T>)container);
       // ну и так далее, вместо Request используй T...
    }
    return "";
}
...
Рейтинг: 0 / 0
Type
    #39331429
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

используешь так:

GenerateId<Request>(contaner, document)
...
Рейтинг: 0 / 0
Type
    #39331494
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_max,

используешь так:

GenerateId<Request>(contaner, document)
под каждый класс использовать этот метод?
...
Рейтинг: 0 / 0
Type
    #39331505
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

если ты заменишь определение

object GenerateId<T>(object container, object document)

на

object GenerateId<T>(IMongoCollection<T>container, T document)

то указывать <Request> будет не нужно, но типы всё равно должны быть известны.

или показывай конечный кейс использования. до сих пор непонятно чего ты хочешь. если тебе дженерики не нужны, с чем же ты вообще там работаешь в монге?
...
Рейтинг: 0 / 0
Type
    #39331565
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttobject GenerateId<T>(IMongoCollection<T>container, T document)


По его коду document нужен только для определения типа, а тут он уже есть, параметр T document в топку.
...
Рейтинг: 0 / 0
Type
    #39331579
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не попадает оно туда
...
Рейтинг: 0 / 0
Type
    #39331617
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

и не будет, оставь один метод и добивай его
...
Рейтинг: 0 / 0
Type
    #39331620
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

это чтобы тип выводился из вызова автоматически
...
Рейтинг: 0 / 0
Type
    #39331639
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_max,

и не будет, оставь один метод и добивай его
Получается надо некий switch делать и подставлять модель в ручную в IMongoCollection<T>?
...
Рейтинг: 0 / 0
Type
    #39331679
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

зачем? модель может выводиться автоматически, в варианте

object GenerateId<T>(IMongoCollection<T>container, T document)
...
Рейтинг: 0 / 0
Type
    #39331680
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

*тип точнее
...
Рейтинг: 0 / 0
Type
    #39332073
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5-й год как использую MongoDB + C# и не понимаю, зачем Вам все эти танцы..
...
Рейтинг: 0 / 0
Type
    #39332116
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

я тоже...
...
Рейтинг: 0 / 0
Type
    #39332123
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как вы сделаете id для заявки чтобы не был гуид а был номер по порядку
...
Рейтинг: 0 / 0
Type
    #39332126
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxА как вы сделаете id для заявки чтобы не был гуид а был номер по порядку

Зачем?
...
Рейтинг: 0 / 0
Type
    #39332157
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxА как вы сделаете id для заявки чтобы не был гуид а был номер по порядку
Тупо инкремент? У нас так :)
...
Рейтинг: 0 / 0
Type
    #39332161
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

да инкремент
чтобы ссылка была
/requests/purchase/23
...
Рейтинг: 0 / 0
Type
    #39332176
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

не рекомендуется изменять механизм генерации стандартного идентификатора, а если очень надо, лучше засунуть свой автоинкремент в уникальный индекс.
...
Рейтинг: 0 / 0
Type
    #39332183
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_max,

не рекомендуется изменять механизм генерации стандартного идентификатора, а если очень надо, лучше засунуть свой автоинкремент в уникальный индекс.
интересно почему?
дело в том, что механизм IdGenerator работает только для одного поля коллекции
...
Рейтинг: 0 / 0
Type
    #39332229
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxинтересно почему?

Ну почитай, для каких целей создавалась MongoDB, в чём её преимущество перед другими СУБД, и почему идентификаторы для объектов генерятся более сложным и хитрым образом, чем обычный инкремент.


mr_maxдело в том, что механизм IdGenerator работает только для одного поля коллекции

Ты можешь добавить своё числовое поле и назначить уникальный индекс.
...
Рейтинг: 0 / 0
Type
    #39332245
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_max,

не рекомендуется изменять механизм генерации стандартного идентификатора, а если очень надо, лучше засунуть свой автоинкремент в уникальный индекс.
Кем не рекомендуется?

В официальной документации написано:
MongoDB reserves the _id field in the top level of all documents as a primary key. _id must be unique, and always has an index with a unique constraint.
However, except for the unique constraint you can use any value for the _id field in your collections .
...
Рейтинг: 0 / 0
Type
    #39332246
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Type
    #39332248
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA Using MongoDb _Id field with C# POCOs
все верно.
только я сделал генератор инкремент.
...
Рейтинг: 0 / 0
Type
    #39332358
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

http://stackoverflow.com/questions/8561485/are-ids-objectids-from-mongo-safe-to-use-in-a-url

Не вижу смысла заморачиваться со своим генератором, если коробочное решение отлично подходит.
...
Рейтинг: 0 / 0
Type
    #39332363
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

http://stackoverflow.com/questions/8561485/are-ids-objectids-from-mongo-safe-to-use-in-a-url

Не вижу смысла заморачиваться со своим генератором, если коробочное решение отлично подходит.
Оно не подходит, оно не делает адреса (/products/3 or /users/42 or whatever).
...
Рейтинг: 0 / 0
Type
    #39332369
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

Я пока не понимаю почему нужны именно такие адреса, ноги у этих /3, /43 и т.д. растут из автоинкрементных ключей реляционных баз данных. Если ты используешь другую БД, то можешь с таким же успехом пользоваться не числовыми ключами, нативными ключами, у монги они подходят для использования в URL. Ничего и ни для кого не поменяется.
...
Рейтинг: 0 / 0
Type
    #39332370
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

Вообще в URL надо бы использовать ЧПУ, а не идентификаторы. Особенно для таких сущностей, как товары, продукты и т.п. Подумай над этим.
...
Рейтинг: 0 / 0
Type
    #39332373
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Это удобно для юзера, чтобы ему легче было использовать этот идентификатор заявки.
А это и есть чпу с человеческим идентификатором нежели гуидом.
...
Рейтинг: 0 / 0
Type
    #39332384
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxЭто удобно для юзера, чтобы ему легче было использовать этот идентификатор заявки.

Это как? По телефону диктовать? п как русская эр, английская эр, о, д, у, к, т, потом косая, потом 3

Ну ладно, дело ваше как говорится. ЧПУ нужен не столько для людей, сколько для поисковых машин. Автоинкрементные ID не безопасны, так как раскрывают некоторую информацию о данных, которую чужим знать не стоит, их можно перебирать и вообще я считаю, что автоинкременты в URL надо избегать по многим соображениям.
...
Рейтинг: 0 / 0
Type
    #39332423
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_maxЭто удобно для юзера, чтобы ему легче было использовать этот идентификатор заявки.

Это как? По телефону диктовать? п как русская эр, английская эр, о, д, у, к, т, потом косая, потом 3

Ну ладно, дело ваше как говорится. ЧПУ нужен не столько для людей, сколько для поисковых машин. Автоинкрементные ID не безопасны, так как раскрывают некоторую информацию о данных, которую чужим знать не стоит, их можно перебирать и вообще я считаю, что автоинкременты в URL надо избегать по многим соображениям.
Хорошо, а что делать с номер заявки или заказа?
...
Рейтинг: 0 / 0
Type
    #39332430
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxХорошо, а что делать с номер заявки или заказа?

В одном из проектов мы генерировали номер заказа распределёнными номерами по шаблону (например, Z-XXXXXX, где Z латинская буква, меняющаяся раз в месяц, а X произвольные цифры), каждый следующий номер заказа никак не был связан с номером предыдущего. Это позволяло скрыть возможность хоть как-то выяснить количество созданных заказов чужими людьми и при этом не мешало нормально с ними работать.
...
Рейтинг: 0 / 0
Type
    #39332531
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxhVostt,
Это удобно для юзера, чтобы ему легче было использовать этот идентификатор заявки.
А это и есть чпу с человеческим идентификатором нежели гуидом.
А почему не номер заявки? А если завтра заявки начнутся разделяться по некому признаку и надо будет иметь префикс в номере заявки?
Плюс по каждому признаку своя нумерация понадобится?

Я бы не стал зашиваться на идентификатор документа в коллекции. Равно как и на идентификатор записи в таблице.
...
Рейтинг: 0 / 0
Type
    #39332535
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxhVosttпропущено...


Это как? По телефону диктовать? п как русская эр, английская эр, о, д, у, к, т, потом косая, потом 3

Ну ладно, дело ваше как говорится. ЧПУ нужен не столько для людей, сколько для поисковых машин. Автоинкрементные ID не безопасны, так как раскрывают некоторую информацию о данных, которую чужим знать не стоит, их можно перебирать и вообще я считаю, что автоинкременты в URL надо избегать по многим соображениям.
Хорошо, а что делать с номер заявки или заказа?
Генерировать (тем более генератор Вы уже вроде как написали) :)
Но для начала понять, что номер заявки - это одно, а идентификатор документа - другое.
...
Рейтинг: 0 / 0
Type
    #39332549
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

Хорошо, а что делать с номер заявки или заказа?
Генерировать (тем более генератор Вы уже вроде как написали) :)
Но для начала понять, что номер заявки - это одно, а идентификатор документа - другое.так этот номер и идентификатор в моем случае одно и тоже.
...
Рейтинг: 0 / 0
Type
    #39332555
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Генерировать (тем более генератор Вы уже вроде как написали) :)
Но для начала понять, что номер заявки - это одно, а идентификатор документа - другое.так этот номер и идентификатор в моем случае одно и тоже.
А что Вам мешает сделать для номера заявки отдельное поле?
...
Рейтинг: 0 / 0
Type
    #39332556
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max, и вообще проблема-то у Вас ещё осталась? Генератор Вы вроде как написали.
...
Рейтинг: 0 / 0
Type
    #39332591
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_max, и вообще проблема-то у Вас ещё осталась? Генератор Вы вроде как написали.
Все работает, вопрос был в том, что как бы там написать генератор, чтобы не использовать switch
...
Рейтинг: 0 / 0
Type
    #39332851
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

Обнаружил кое-что интересное
...
Рейтинг: 0 / 0
Type
    #39332855
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAmr_max, и вообще проблема-то у Вас ещё осталась? Генератор Вы вроде как написали.
Все работает, вопрос был в том, что как бы там написать генератор, чтобы не использовать switch
В статье это показано.
...
Рейтинг: 0 / 0
Type
    #39332858
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxmr_max,

Обнаружил кое-что интересное
И что же?
...
Рейтинг: 0 / 0
Type
    #39332861
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxmr_max,

Обнаружил кое-что интересное
И что же?

В какой статье?
в том что идентификатор содержит в себе сколько всего офигеть.
...
Рейтинг: 0 / 0
Type
    #39332913
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

И что же?

В какой статье? 19813066
mr_maxв том что идентификатор содержит в себе сколько всего офигеть.
ИМХО полезно начинать знакомство с новым продуктом с чтения документации по нему: https://docs.mongodb.com/v3.2/reference/method/ObjectId/ :)
...
Рейтинг: 0 / 0
Type
    #39332914
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...


В какой статье? 19813066
mr_maxв том что идентификатор содержит в себе сколько всего офигеть.
ИМХО полезно начинать знакомство с новым продуктом с чтения документации по нему: https://docs.mongodb.com/v3.2/reference/method/ObjectId/ :)
Да разобрался, кто-нибудь это использует?
...
Рейтинг: 0 / 0
Type
    #39333225
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxДа разобрался, кто-нибудь это использует?

Это нужно для шардинга, чтобы не заморачиваться.
...
Рейтинг: 0 / 0
Type
    #39333275
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни, вы о чем?
...
Рейтинг: 0 / 0
Type
    #39333284
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Кто здесь?
...
Рейтинг: 0 / 0
Type
    #39333422
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
В одном из проектов мы генерировали номер заказа распределёнными номерами по шаблону (например, Z-XXXXXX, где Z латинская буква, меняющаяся раз в месяц, а X произвольные цифры), каждый следующий номер заказа никак не был связан с номером предыдущего. Это позволяло скрыть возможность хоть как-то выяснить количество созданных заказов чужими людьми и при этом не мешало нормально с ними работать.
В латинском всего 26 букв, переходи на китайский!
P. S. Для больничных листов вроде как используется специальный алгоритм для генерации номеров, что обеспечивает проверку того, что либо такой номер уже был, либо вообще никогда не может быть, либо что лист нормальный. Для защиты от подделок.
...
Рейтинг: 0 / 0
Type
    #39333464
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

Кто здесь?
Шардинг и без ObjectId можно прекрасно реализовать.
...
Рейтинг: 0 / 0
Type
    #39333466
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И потом шардинг разве нужен ТС-у? :)
...
Рейтинг: 0 / 0
Type
    #39333476
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttskyANA,

Кто здесь?
Шардинг и без ObjectId можно прекрасно реализовать.

Можно. Но я ж не зря добавил «без заморочек».

skyANAИ потом шардинг разве нужен ТС-у? :)

Тогда смысл использования монги немного меркнет.
...
Рейтинг: 0 / 0
Type
    #39333818
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТогда смысл использования монги немного меркнет.
Насколько я помню ТСу понадобилось Schemaless. Ну и ещё наверное что-нибудь новенькое пощупать :)
...
Рейтинг: 0 / 0
Type
    #39333820
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще монгу используют ой как по разному :)
...
Рейтинг: 0 / 0
Type
    #39334095
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаю заявки на закупки, как лучше продукты хранить вместе с заявкой или в отдельной коллекции.
...
Рейтинг: 0 / 0
Type
    #39334109
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,

я бы хранил вместе с заявкой, так как заявка со своими потрохами является одним цельным документом, и если что-то где-то когда-то поменяется, заявка должна остаться в неизменном состоянии.
...
Рейтинг: 0 / 0
Type
    #39334112
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_max,

я бы хранил вместе с заявкой, так как заявка со своими потрохами является одним цельным документом, и если что-то где-то когда-то поменяется, заявка должна остаться в неизменном состоянии.
к примеру она будет храниться в поле products,
можно ли туда добавлять в конец новый элемент?
...
Рейтинг: 0 / 0
Type
    #39334115
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxhVosttmr_max,

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

можно конечно, и удалять можно
...
Рейтинг: 0 / 0
Type
    #39334130
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_maxпропущено...

к примеру она будет храниться в поле products,
можно ли туда добавлять в конец новый элемент?

можно конечно, и удалять можно

Так заявки будут универсальными т.е. коллекция requests для всех видов заявок
на закупку, на техподдержку и т.д.
получается если делать pco модель, то туда надо будет и products лепить, а этот поле в других заявок не нужна.
может все таки лучше вынести?
...
Рейтинг: 0 / 0
Type
    #39334146
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxделаю заявки на закупки, как лучше продукты хранить вместе с заявкой или в отдельной коллекции.
Лучше в реляционной СУБД с поддержкой транзакций.
...
Рейтинг: 0 / 0
Type
    #39334163
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxТак заявки будут универсальными т.е. коллекция requests для всех видов заявок
на закупку, на техподдержку и т.д.
получается если делать pco модель, то туда надо будет и products лепить, а этот поле в других заявок не нужна.

Это же не реляционная БД, где неиспользуемые колонки болтаются как г в проруби, если чего-то нет, то этого нет физически, поэтому...

mr_maxможет все таки лучше вынести?

...не вижу смысла. Но думай сам. Рассмотри задачу со всех сторон, заранее. Чтобы потом не было боли ниже поясницы.
...
Рейтинг: 0 / 0
Type
    #39334164
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЛучше в реляционной СУБД с поддержкой транзакций.

Не вижу чем лучше.
...
Рейтинг: 0 / 0
Type
    #39334175
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxделаю заявки на закупки, как лучше продукты хранить вместе с заявкой или в отдельной коллекции.
Вместе.
...
Рейтинг: 0 / 0
Type
    #39334177
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Не вижу чем лучше.
Например
Почему вы никогда не должны использовать MongoDB
...
Рейтинг: 0 / 0
Type
    #39334181
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxhVosttпропущено...


можно конечно, и удалять можно

Так заявки будут универсальными т.е. коллекция requests для всех видов заявок
на закупку, на техподдержку и т.д.
получается если делать pco модель, то туда надо будет и products лепить, а этот поле в других заявок не нужна.
может все таки лучше вынести?
У заявок на техподдержку нет состава/детализации?
...
Рейтинг: 0 / 0
Type
    #39334182
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttНе вижу чем лучше.
Например
Почему вы никогда не должны использовать MongoDB
Этому баяну сто лет в обед. Обсуждали уже на разных ресурсах.
...
Рейтинг: 0 / 0
Type
    #39334185
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...


Так заявки будут универсальными т.е. коллекция requests для всех видов заявок
на закупку, на техподдержку и т.д.
получается если делать pco модель, то туда надо будет и products лепить, а этот поле в других заявок не нужна.
может все таки лучше вынести?
У заявок на техподдержку нет состава/детализации?
Нету, заявок разных много будет, получается мне надо будет в модели указать Products все таки.
...
Рейтинг: 0 / 0
Type
    #39334196
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxделаю заявки на закупки, как лучше продукты хранить вместе с заявкой или в отдельной коллекции.
Вместе.
А если потребуется изменить продукты? Ну там признак добавить, санкционный ли он.
...
Рейтинг: 0 / 0
Type
    #39334197
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

У заявок на техподдержку нет состава/детализации?
Нету, заявок разных много будет, получается мне надо будет в модели указать Products все таки.
Это проблема? Укажите не Products, а Items.
Для одних заявок элементами будут продукты, для других что-то иное.
...
Рейтинг: 0 / 0
Type
    #39334199
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAпропущено...

Вместе.
А если потребуется изменить продукты? Ну там признак добавить, санкционный ли он.
Это вопрос из разряда, а если завтра изменится цена продукта? :)
...
Рейтинг: 0 / 0
Type
    #39334200
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЭто проблема? Укажите не Products, а Items.

И потом оказывается, что в поле с названием FirstName лежат ИНН/ОГРН разделенные пробелом.
...
Рейтинг: 0 / 0
Type
    #39334202
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAЭто проблема? Укажите не Products, а Items.

И потом оказывается, что в поле с названием FirstName лежат ИНН/ОГРН разделенные пробелом.
Не оказывается.
...
Рейтинг: 0 / 0
Type
    #39334203
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЭто вопрос из разряда, а если завтра изменится цена продукта? :)
При чем тут цена? Она лежит в строго определенном поле со строго определенным типом.
...
Рейтинг: 0 / 0
Type
    #39334204
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAпропущено...

Вместе.
А если потребуется изменить продукты? Ну там признак добавить, санкционный ли он.
Легко, поле добавится новое и все..
Вообще реляционная база мне здесь не нужна..
...
Рейтинг: 0 / 0
Type
    #39334207
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAЭто вопрос из разряда, а если завтра изменится цена продукта? :)
При чем тут цена? Она лежит в строго определенном поле со строго определенным типом.
При том, что заявка - это свершившийся факт. Она была выполнена с такими-то параметрами продуктов.
Если вдруг ввели санкции, изменили цену, поменяли производителя, то это никак не отражается на предыдущих заявках.
...
Рейтинг: 0 / 0
Type
    #39334209
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAЭто вопрос из разряда, а если завтра изменится цена продукта? :)
При чем тут цена? Она лежит в строго определенном поле со строго определенным типом.
Странная любовь в sql
была печаль с nosql?
...
Рейтинг: 0 / 0
Type
    #39334212
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, вообще так можно и до EAV дойти :) У разных продуктов же может быть разный набор характеристик.
...
Рейтинг: 0 / 0
Type
    #39334240
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПри том, что заявка - это свершившийся факт. Она была выполнена с такими-то параметрами продуктов.
Если вдруг ввели санкции, изменили цену, поменяли производителя, то это никак не отражается на предыдущих заявках.
А если это заявка например на подбор программиста? Она может быть 100500 раз изменена, дополнена, завизирована, согласована, подписана ЭП?
...
Рейтинг: 0 / 0
Type
    #39334272
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПри том, что заявка - это свершившийся факт. Она была выполнена с такими-то параметрами продуктов.
Если вдруг ввели санкции, изменили цену, поменяли производителя, то это никак не отражается на предыдущих заявках.

+100500

И имена товаров в заявках не должны поменяться, если их поменяли в каталоге товаров.
...
Рейтинг: 0 / 0
Type
    #39334274
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAПри том, что заявка - это свершившийся факт. Она была выполнена с такими-то параметрами продуктов.
Если вдруг ввели санкции, изменили цену, поменяли производителя, то это никак не отражается на предыдущих заявках.
А если это заявка например на подбор программиста? Она может быть 100500 раз изменена, дополнена, завизирована, согласована, подписана ЭП?

Если требуется задачей, у заявки например имеется длинный жизненный цикл, ввести понятие версии заявки. В любой адекватной системе ЭДО это является нормой.
...
Рейтинг: 0 / 0
Type
    #39334279
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAПри том, что заявка - это свершившийся факт. Она была выполнена с такими-то параметрами продуктов.
Если вдруг ввели санкции, изменили цену, поменяли производителя, то это никак не отражается на предыдущих заявках.

+100500

И имена товаров в заявках не должны поменяться, если их поменяли в каталоге товаров.
А если была скажем орфографическая ошибка или неверно введенные паспортные данные?
...
Рейтинг: 0 / 0
Type
    #39334301
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА если была скажем орфографическая ошибка или неверно введенные паспортные данные?

И что это меняет? Если купили «Пилисос», то он и должен оставаться им по заявке до конца. Насчёт паспортных данных не понял. Как понять, ошибка это или паспорт поменялся, это вопрос конкретной логики. БД-то пофигу, апдейт есть апдейт, но одно другому рознь, при чём это может выражаться финансовыми и репутационными последствиями.
...
Рейтинг: 0 / 0
Type
    #39334321
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAПри том, что заявка - это свершившийся факт. Она была выполнена с такими-то параметрами продуктов.
Если вдруг ввели санкции, изменили цену, поменяли производителя, то это никак не отражается на предыдущих заявках.
А если это заявка например на подбор программиста? Она может быть 100500 раз изменена, дополнена, завизирована, согласована, подписана ЭП?
А если в какой-то момент надо вернуться на 3 шага назад? Впрочем про версии уже написали.
...
Рейтинг: 0 / 0
Type
    #39334324
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttпропущено...


+100500

И имена товаров в заявках не должны поменяться, если их поменяли в каталоге товаров.
А если была скажем орфографическая ошибка или неверно введенные паспортные данные?
Что-то спор уже не о SQL vs NoSQL, а о том, какие данные о продукте копировать в заявку, а какие доставать по ссылке.
...
Рейтинг: 0 / 0
Type
    #39334357
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ, и вообще автор выбрал монгу. Задаёт вопросы о том, как лучше с ней работать.

Зачем набрасывать? Где ты был когда он выбирал? Вот там бы и набрасывал.
...
Рейтинг: 0 / 0
Type
    #39334380
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЕвгенийВ, и вообще автор выбрал монгу. Задаёт вопросы о том, как лучше с ней работать.

Зачем набрасывать? Где ты был когда он выбирал? Вот там бы и набрасывал.
Да это старый век sql, у меня бы сейчас 100 таблиц бы вышло с этими делами..
...
Рейтинг: 0 / 0
Type
    #39334451
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь самый главный вопрос,
есть коллекция requests поле массив items
как добавлять туда в конец массива новое значение?
...
Рейтинг: 0 / 0
Type
    #39334453
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
походу вот так

Код: c#
1.
Builders<Request>.Update.Set(x => x.Items[-1], object)
...
Рейтинг: 0 / 0
Type
    #39334466
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAЕвгенийВ, и вообще автор выбрал монгу. Задаёт вопросы о том, как лучше с ней работать.

Зачем набрасывать? Где ты был когда он выбирал? Вот там бы и набрасывал.
Да это старый век sql, у меня бы сейчас 100 таблиц бы вышло с этими делами..
Sql не старый, а noSql не новый !
Просто многие не могут мыслить множествами вот и находят. Как известно количество интеллекта на планете величина постоянная, а численность программистовнаселения растет. Вот и встречают с аплодисментами все более примитивные решения ибо осмыслить их проще.
...
Рейтинг: 0 / 0
Type
    #39334468
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxпоходу вот так

Код: c#
1.
Builders<Request>.Update.Set(x => x.Items[-1], object)



Не получается добавить!
...
Рейтинг: 0 / 0
Type
    #39334471
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

В чём смысл данные не реляционной природы пытаться запихнуть в реляционную БД? Есть несколько основных способ укласть такие данные в РСУБД, например, EAV. Но зачем такое кривые уродские костыли, когда можно использовать NoSQL? Кроме того, никто тебе не мешает использовать SQL и NoSQL вместе. В общем холивор ни о чём, время показало, что для каждой из технологий есть место под солнцем, и сравнивать их глупо.

Обвинять же людей в том, что они выбирают более простые решения -- вообще вселенская глупость.
...
Рейтинг: 0 / 0
Type
    #39334472
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxmr_maxпоходу вот так

Код: c#
1.
Builders<Request>.Update.Set(x => x.Items[-1], object)



Не получается добавить!

Разобрался как добавлять..
ребята..ребята..
может мне на каждый тип заявки создать свою модель
PurchaseRequest - например, а также иметь базовую модель Request
?
...
Рейтинг: 0 / 0
Type
    #39334475
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max, через Update.Push.
...
Рейтинг: 0 / 0
Type
    #39334477
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Type
    #39334479
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Type
    #39334480
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДокументацию читайте: https://docs.mongodb.com/manual/reference/operator/update-array/
Спасибо.
...
Рейтинг: 0 / 0
Type
    #39334482
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxпоходу вот так

Код: c#
1.
Builders<Request>.Update.Set(x => x.Items[-1], object)


Вот так в Вашем случае:
Код: c#
1.
Builders<Request>.Update.Push(x => x.Items, product)
...
Рейтинг: 0 / 0
Type
    #39334485
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпоходу вот так

Код: c#
1.
Builders<Request>.Update.Set(x => x.Items[-1], object)


Вот так в Вашем случае:
Код: c#
1.
Builders<Request>.Update.Push(x => x.Items, product)


Спасибо
а идея с поликлассами, нормальная стоит ее делать
Request - абстрактный
PurchaseRequest - конкретный.
...
Рейтинг: 0 / 0
Type
    #39334512
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Вот так в Вашем случае:
Код: c#
1.
Builders<Request>.Update.Push(x => x.Items, product)



Спасибо
а идея с поликлассами, нормальная стоит ее делать
Request - абстрактный
PurchaseRequest - конкретный.
Реализация в статье только не очень удачная.
Не стоит в _t хранить имя конкретного класса, лучше некий числовой дискриминатор.
...
Рейтинг: 0 / 0
Type
    #39334536
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

Спасибо
а идея с поликлассами, нормальная стоит ее делать
Request - абстрактный
PurchaseRequest - конкретный.
Реализация в статье только не очень удачная.
Не стоит в _t хранить имя конкретного класса, лучше некий числовой дискриминатор.

Лучше интерфейсы использовать или абстрактный класс для Request?
...
Рейтинг: 0 / 0
Type
    #39334545
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе стоит в _t хранить имя конкретного класса, лучше некий числовой дискриминатор.

Почему? Имя конкретного класса чуть менее экономно, чем число, но более гибко.
...
Рейтинг: 0 / 0
Type
    #39334547
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxЛучше интерфейсы использовать или абстрактный класс для Request?

Класс.
...
Рейтинг: 0 / 0
Type
    #39334570
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_maxЛучше интерфейсы использовать или абстрактный класс для Request?

Класс.+1
...
Рейтинг: 0 / 0
Type
    #39334573
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНе стоит в _t хранить имя конкретного класса, лучше некий числовой дискриминатор.

Почему? Имя конкретного класса чуть менее экономно, чем число, но более гибко.
Чем это они гибко?

С развитием системы неизбежно наступает время рефакторинга. Классы перезжают в другие сборки, меняют названия.
...
Рейтинг: 0 / 0
Type
    #39334603
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧем это они гибко?

С развитием системы неизбежно наступает время рефакторинга. Классы перезжают в другие сборки, меняют названия.

Ну это просто же. Если не очевидно, то рисуем табличку +/-, и в этой табличке "время рефакторинга" внезапно оказывается одним из двух единственных плюсов, при чём довольно сомнительным, потому что во время рефакторинга, поле дискриминатора можно и обновить, в рамках рефакторинга расходы на это -- копейки.

Для имени класса в качестве дискриминатора оказывается гораздо больше увесистых плюсов:

+ отсутствие необходимости содержать и поддерживать какой-нибудь енум
+ можно развивать иерархию в любую глубину и это сразу будет работать, без ковыряний
+ в данных отсутствуют магические числа, которые ни о чём не говорят

В общем пройденный этап ещё на заре использования EF. Имя класса для дискриминатора -- верный выбор по всем фронтам, к гадалке не ходи.
...
Рейтинг: 0 / 0
Type
    #39334613
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЧем это они гибко?

С развитием системы неизбежно наступает время рефакторинга. Классы перезжают в другие сборки, меняют названия.

Ну это просто же. Если не очевидно, то рисуем табличку +/-, и в этой табличке "время рефакторинга" внезапно оказывается одним из двух единственных плюсов, при чём довольно сомнительным, потому что во время рефакторинга, поле дискриминатора можно и обновить, в рамках рефакторинга расходы на это -- копейки.

Для имени класса в качестве дискриминатора оказывается гораздо больше увесистых плюсов:

+ отсутствие необходимости содержать и поддерживать какой-нибудь енум
+ можно развивать иерархию в любую глубину и это сразу будет работать, без ковыряний
+ в данных отсутствуют магические числа, которые ни о чём не говорят

В общем пройденный этап ещё на заре использования EF. Имя класса для дискриминатора -- верный выбор по всем фронтам, к гадалке не ходи.
Согласен, выходит попроще
Код: c#
1.
2.
3.
4.
5.
6.
 public async Task<object> GetList<T>() where T: Request
        {
            var filter = Builders<T>.Filter.Eq(e => e.Type, typeof(T).Name);;
            var items = await _dbContext.Database.GetCollection<T>("requests").Find(filter).Limit(30).ToListAsync();
            return items;
        }
...
Рейтинг: 0 / 0
Type
    #39334646
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЧем это они гибко?

С развитием системы неизбежно наступает время рефакторинга. Классы перезжают в другие сборки, меняют названия.

Ну это просто же. Если не очевидно, то рисуем табличку +/-, и в этой табличке "время рефакторинга" внезапно оказывается одним из двух единственных плюсов, при чём довольно сомнительным, потому что во время рефакторинга, поле дискриминатора можно и обновить, в рамках рефакторинга расходы на это -- копейки.

Для имени класса в качестве дискриминатора оказывается гораздо больше увесистых плюсов:

+ отсутствие необходимости содержать и поддерживать какой-нибудь енум
+ можно развивать иерархию в любую глубину и это сразу будет работать, без ковыряний
+ в данных отсутствуют магические числа, которые ни о чём не говорят

В общем пройденный этап ещё на заре использования EF. Имя класса для дискриминатора -- верный выбор по всем фронтам, к гадалке не ходи.
Я тоже самое могу написать, только про NH: "В общем пройденный этап ещё на заре использования NH. Число в качестве для дискриминатора -- верный выбор по всем фронтам, к гадалке не ходи. "
...
Рейтинг: 0 / 0
Type
    #39334653
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ тоже самое могу написать, только про NH: "В общем пройденный этап ещё на заре использования NH. Число в качестве для дискриминатора -- верный выбор по всем фронтам, к гадалке не ходи. "

Ну и супер! Чем больше точек зрения, тем яснее, что имя класса -- лучший выбор для дискриминатора
...
Рейтинг: 0 / 0
Type
    #39334663
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max
Код: c#
1.
2.
3.
4.
5.
6.
 public async Task<object> GetList<T>() where T: Request
        {
            var filter = Builders<T>.Filter.Eq(e => e.Type, typeof(T).Name);;
            var items = await _dbContext.Database.GetCollection<T>("requests").Find(filter).Limit(30).ToListAsync();
            return items;
        }


Хочется что бы вернулось что нибудь типизированное, а то JavaScript какой то получается.
...
Рейтинг: 0 / 0
Type
    #39334664
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВmr_max
Код: c#
1.
2.
3.
4.
5.
6.
 public async Task<object> GetList<T>() where T: Request
        {
            var filter = Builders<T>.Filter.Eq(e => e.Type, typeof(T).Name);;
            var items = await _dbContext.Database.GetCollection<T>("requests").Find(filter).Limit(30).ToListAsync();
            return items;
        }


Хочется что бы вернулось что нибудь типизированное, а то JavaScript какой то получается.
А это api, возвращается в Json.
...
Рейтинг: 0 / 0
Type
    #39334668
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВХочется что бы вернулось что нибудь типизированное, а то JavaScript какой то получается.

Таки ви что-то имеети против JavaScript, м?
...
Рейтинг: 0 / 0
Type
    #39334712
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВХочется что бы вернулось что нибудь типизированное, а то JavaScript какой то получается.

Таки ви что-то имеети против JavaScript, м?
Не я один, Андерс Хейлсберг тоже !
...
Рейтинг: 0 / 0
Type
    #39334716
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxА это api, возвращается в Json.
Который должен прекрасно десериализоваться в List<T> или кривой там .NET провайдер?
...
Рейтинг: 0 / 0
Type
    #39334756
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЯ тоже самое могу написать, только про NH: "В общем пройденный этап ещё на заре использования NH. Число в качестве для дискриминатора -- верный выбор по всем фронтам, к гадалке не ходи. "

Ну и супер! Чем больше точек зрения, тем яснее, что имя класса -- лучший выбор для дискриминатора
Я вообще-то про число писал. Но да! Число -- лучший выбор для дискриминатора
...
Рейтинг: 0 / 0
Type
    #39334757
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВmr_max
Код: c#
1.
2.
3.
4.
5.
6.
 public async Task<object> GetList<T>() where T: Request
        {
            var filter = Builders<T>.Filter.Eq(e => e.Type, typeof(T).Name);;
            var items = await _dbContext.Database.GetCollection<T>("requests").Find(filter).Limit(30).ToListAsync();
            return items;
        }



Хочется что бы вернулось что нибудь типизированное, а то JavaScript какой то получается.
Обычно типизированное и возвращается, это ТС почему-то по своему запилил.
...
Рейтинг: 0 / 0
Type
    #39334809
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


Ну и супер! Чем больше точек зрения, тем яснее, что имя класса -- лучший выбор для дискриминатора
Я вообще-то про число писал. Но да! Число -- лучший выбор для дискриминатора
А в документации Имя класса используется
...
Рейтинг: 0 / 0
Type
    #39334812
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Я вообще-то про число писал. Но да! Число -- лучший выбор для дискриминатора
А в документации Имя класса используется

И это вполне естественно!
Зачем в документации приводить заведомо неудачные решения.
...
Рейтинг: 0 / 0
Type
    #39334820
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_maxпропущено...

А в документации Имя класса используется

И это вполне естественно!
Зачем в документации приводить заведомо неудачные решения.
Имя даже удобно, когда по базе рыскаешься...
...
Рейтинг: 0 / 0
Type
    #39334867
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как лучше автора записывать в заявке в виде ид, или в виде объекта название, должность..?
...
Рейтинг: 0 / 0
Type
    #39334887
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max, в виде объекта
...
Рейтинг: 0 / 0
Type
    #39335026
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_max, в виде объекта
Принял,
а кто-нибудь знает можно ли сделать генератор для поля Requests.Products.Id
?
...
Рейтинг: 0 / 0
Type
    #39335040
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAmr_max, в виде объекта
Принял,
а кто-нибудь знает можно ли сделать генератор для поля Requests.Products.Id
?
А зачем? У Вас что, пользователи каждый раз заводят новый продукт при составлении заявки?
...
Рейтинг: 0 / 0
Type
    #39335042
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

Принял,
а кто-нибудь знает можно ли сделать генератор для поля Requests.Products.Id
?
А зачем? У Вас что, пользователи каждый раз заводят новый продукт при составлении заявки?
нет, я имею ввиду это будет id записи, чтобы её можно было удалить отредактировать к ней обратиться, это не ид продукта, а ид записи продукта в заявке.
...
Рейтинг: 0 / 0
Type
    #39335044
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxнет, я имею ввиду это будет id записи, чтобы её можно было удалить отредактировать к ней обратиться, это не ид продукта, а ид записи продукта в заявке.

Чем ObjectId не подходит, опять же? )
...
Рейтинг: 0 / 0
Type
    #39335047
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_maxнет, я имею ввиду это будет id записи, чтобы её можно было удалить отредактировать к ней обратиться, это не ид продукта, а ид записи продукта в заявке.

Чем ObjectId не подходит, опять же? )
подходит только как его заставить там генерировать.
Вот как я делаю обычно
Код: c#
1.
2.
3.
4.
5.
BsonClassMap.RegisterClassMap<Request>(cm =>
            {
                cm.AutoMap();
                cm.MapIdMember(c => c.Id).SetIdGenerator(IncGenerator.Instance);
            });
...
Рейтинг: 0 / 0
Type
    #39335051
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxhVosttпропущено...


Чем ObjectId не подходит, опять же? )
подходит только как его заставить там генерировать.
Код: c#
1.
var id = ObjectId.GenerateNewId();
...
Рейтинг: 0 / 0
Type
    #39335052
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

подходит только как его заставить там генерировать.
Код: c#
1.
var id = ObjectId.GenerateNewId();


ага т.е. при записи делать, понял.
...
Рейтинг: 0 / 0
Type
    #39335055
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще заворачиваете всё в свой класс IdGenerator и используете что хотите. Простейшая же задачка на ООП :)
...
Рейтинг: 0 / 0
Type
    #39335056
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Код: c#
1.
var id = ObjectId.GenerateNewId();



ага т.е. при записи делать, понял.
Это уж как Вам удобнее. Лично я предпочитаю при создании инстанса класса.
...
Рейтинг: 0 / 0
Type
    #39335059
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа как-то так:
Код: c#
1.
2.
3.
4.
public ArrayItem Create(string id = null)
{
    return new ArrayItem(id ?? IdGenerator.GenerateNewId());
}
...
Рейтинг: 0 / 0
Type
    #39335643
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТипа как-то так:
Код: c#
1.
2.
3.
4.
public ArrayItem Create(string id = null)
{
    return new ArrayItem(id ?? IdGenerator.GenerateNewId());
}



не срабатывает
Код: c#
1.
2.
3.
4.
public PurchaseProduct()
        {
            this.Id = ObjectId.GenerateNewId();
        }
...
Рейтинг: 0 / 0
Type
    #39335647
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри разобрался
сделал так
Код: c#
1.
2.
3.
 [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
...
Рейтинг: 0 / 0
Type
    #39335660
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как лучше сделать, хранить сумму по продукту в заявке или высчитывать её при получении данных из монги?
...
Рейтинг: 0 / 0
Type
    #39335662
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
mr_maxКак лучше сделать, хранить сумму по продукту в заявке или высчитывать её при получении данных из монги?
Высчитывать. Никогда нельзя поручится, что данные не изменятся
...
Рейтинг: 0 / 0
Type
    #39335672
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxКак лучше сделать, хранить сумму по продукту в заявке или высчитывать её при получении данных из монги?

Хранить сумму. Почему не высчитывать? Потому что на конечную сумму может быть оказано много одноразовых эффектов, например в следствие работы программ лояльности (скидоны, бонусы, купи 2 получи 100 р. и прочее прочее прочее). Сумма заказа это часть заявки.
...
Рейтинг: 0 / 0
Type
    #39335702
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxКак лучше сделать, хранить сумму по продукту в заявке или высчитывать её при получении данных из монги?
Что такое сумма по продукту? Как она расчитывается и зачем?
...
Рейтинг: 0 / 0
Type
    #39335709
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Высчитывать. Никогда нельзя поручится, что данные не изменятся

Очень странное предположение. Если так рассуждать, то измениться всё что угодно может. Сумма такая же часть заявки, её показывают пользователю, значит и оплачивать он её должен, а не какую-то другую, которая автоматически вычислится, если что-то там внезапно изменится.
...
Рейтинг: 0 / 0
Type
    #39335755
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttCat2Высчитывать. Никогда нельзя поручится, что данные не изменятся

Очень странное предположение.
Да ничего тут странного, вы просто смотрите каждый со своей колокольни. А решение зависит от предметной области.
...
Рейтинг: 0 / 0
Type
    #39335787
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДа ничего тут странного, вы просто смотрите каждый со своей колокольни. А решение зависит от предметной области.

Лично я пояснил свою мысль. А как там обстоят дела с предметкой ТС-у виднее, чем нам всем.
...
Рейтинг: 0 / 0
Type
    #39335932
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxКак лучше сделать, хранить сумму по продукту в заявке или высчитывать её при получении данных из монги?
Что такое сумма по продукту? Как она расчитывается и зачем?

При формировании заявки юзер набирает корзину товаров,
у товара есть цена, также он указывает кол-во, сейчас я храню в корзину только цену товара и кол-во, нужно ли хранить сумму
или делать так
Код: c#
1.
2.
 [BsonIgnore]
        public double Sum => Price*Count;
...
Рейтинг: 0 / 0
Type
    #39335990
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max,
операция умножения двух вещественных чисел очень ресурсоемка, лучше хранить предвычесленное значение :)
...
Рейтинг: 0 / 0
Type
    #39335997
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВmr_max,
операция умножения двух вещественных чисел очень ресурсоемка, лучше хранить предвычесленное значение :)
При наших серваках, все еще ресурсоемка?
...
Рейтинг: 0 / 0
Type
    #39335999
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxЕвгенийВmr_max,
операция умножения двух вещественных чисел очень ресурсоемка, лучше хранить предвычесленное значение :)
При наших серваках, все еще ресурсоемка?

Он тебя подкалывает
...
Рейтинг: 0 / 0
Type
    #39336003
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Что такое сумма по продукту? Как она расчитывается и зачем?

При формировании заявки юзер набирает корзину товаров,
у товара есть цена, также он указывает кол-во, сейчас я храню в корзину только цену товара и кол-во, нужно ли хранить сумму
или делать так
Код: c#
1.
2.
 [BsonIgnore]
        public double Sum => Price*Count;


В данной ситуации не вижу смысла хранить сумму.
...
Рейтинг: 0 / 0
Type
    #39336022
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmr_maxпропущено...

При наших серваках, все еще ресурсоемка?

Он тебя подкалывает
Думаю, за то дополнительное время, которое будет потрачено на вытаскивание с диска дополнительного числа, какой нибудь i7, сделает как минимум измеряющиеся 4 разрядами число умножений вещественных чисел.
...
Рейтинг: 0 / 0
Type
    #39336203
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, а где лучше хранить процесс согласования заявки, в этой же коллекции или в другой?
...
Рейтинг: 0 / 0
Type
    #39336210
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxРебята, а где лучше хранить процесс согласования заявки, в этой же коллекции или в другой?Вопросы задаёте так, будто мы разбираемся в вашей предметке :) Вы для начала объясните, что это за процесс такой.
...
Рейтинг: 0 / 0
Type
    #39336214
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще не вижу смысла пихать в документ ещё и историческу информацию о процессах, что с ним происходили.
В различных областях объекты переходят из одного состояния в другое. Не припомню, чтобы была необходимость данные о переходах хранить вместе с объектом.
...
Рейтинг: 0 / 0
Type
    #39336217
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА вообще не вижу смысла пихать в документ ещё и историческу информацию о процессах, что с ним происходили.
В различных областях объекты переходят из одного состояния в другое. Не припомню, чтобы была необходимость данные о переходах хранить вместе с объектом.
Задача проста,
Спасибо.
...
Рейтинг: 0 / 0
Type
    #39336219
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxРебята, а где лучше хранить процесс согласования заявки, в этой же коллекции или в другой?

В другой. Логически история не является частью заявки. Старайся смотреть со стороны предметки. Если что-то является или входит в, то это скорее всего один документа. Процесс согласования (история) не является и не входит в заявку. В заявке хранится её актуальное состояние.
...
Рейтинг: 0 / 0
Type
    #39336280
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как мне про апдейтить два поля например, когда мне возвращается весь объект,
пробегать в цикле проверять, какие заполнены, такие и апдейтить через Update.Set?
...
Рейтинг: 0 / 0
Type
    #39336303
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxа как мне про апдейтить два поля например, когда мне возвращается весь объект,
пробегать в цикле проверять, какие заполнены, такие и апдейтить через Update.Set?
Ни фига не понял. Пользователь изменил заявку, ну так сохраните её в том виде, что получилось. В чём проблема?
...
Рейтинг: 0 / 0
Type
    #39336305
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще используйте ViewModel.
...
Рейтинг: 0 / 0
Type
    #39336306
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxа как мне про апдейтить два поля например, когда мне возвращается весь объект,
пробегать в цикле проверять, какие заполнены, такие и апдейтить через Update.Set?
Ни фига не понял. Пользователь изменил заявку, ну так сохраните её в том виде, что получилось. В чём проблема?
так он поменял только два поля например,
Вот что навоял..

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public async Task<object> Update<T>(int id, T request) where T : Request
        {
            var filter = Builders<T>.Filter.Where(e => e.Id == (object)id);
            var updateValues = new List<UpdateDefinition<T>>();
            for (var index = 0; index < typeof(Purchase).GetProperties().Length; index++)
            {
                var prop = typeof(Purchase).GetProperties()[index];
                var value = prop.GetValue(request);
                if (value != null)
                {
                    updateValues.Add(Builders<T>.Update.Set(prop.Name, value));
                }
            }

            var update = Builders<T>.Update.Combine(updateValues);
            await _dbContext.Database.GetCollection<T>("requests").UpdateOneAsync(filter, update);
            return request;
        }
...
Рейтинг: 0 / 0
Type
    #39336310
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ вообще используйте ViewModel.
Я это и использую.
...
Рейтинг: 0 / 0
Type
    #39336314
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Ни фига не понял. Пользователь изменил заявку, ну так сохраните её в том виде, что получилось. В чём проблема?
так он поменял только два поля например,
Вот что навоял..

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public async Task<object> Update<T>(int id, T request) where T : Request
        {
            var filter = Builders<T>.Filter.Where(e => e.Id == (object)id);
            var updateValues = new List<UpdateDefinition<T>>();
            for (var index = 0; index < typeof(Purchase).GetProperties().Length; index++)
            {
                var prop = typeof(Purchase).GetProperties()[index];
                var value = prop.GetValue(request);
                if (value != null)
                {
                    updateValues.Add(Builders<T>.Update.Set(prop.Name, value));
                }
            }

            var update = Builders<T>.Update.Combine(updateValues);
            await _dbContext.Database.GetCollection<T>("requests").UpdateOneAsync(filter, update);
            return request;
        }


Костыль какой-то.
...
Рейтинг: 0 / 0
Type
    #39336317
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAИ вообще используйте ViewModel.
Я это и использую.
А в коде Вашем я вижу, что нет.
...
Рейтинг: 0 / 0
Type
    #39336320
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

Я это и использую.
А в коде Вашем я вижу, что нет.
А вот здесь есть она
Код: c#
1.
2.
3.
4.
5.
6.
        [HttpPut("{id:int}")]
        public IActionResult Update(int id, [FromBody] Purchase purchase)
        {
            var task = _requestRepository.Update(id, purchase);
            return new ObjectResult(task.Result);
        }
...
Рейтинг: 0 / 0
Type
    #39336324
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

А в коде Вашем я вижу, что нет.
А вот здесь есть она
Код: c#
1.
2.
3.
4.
5.
6.
        [HttpPut("{id:int}")]
        public IActionResult Update(int id, [FromBody] Purchase purchase)
        {
            var task = _requestRepository.Update(id, purchase);
            return new ObjectResult(task.Result);
        }


Тогда я впервые вижу, чтобы ViewModel передавали в репозиторий :)

А если серьёзно, то почему у Вас поля в модели не заполнены?
...
Рейтинг: 0 / 0
Type
    #39336329
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вот жто: _requestRepository.Update(id, purchase) , - фигня какая-то. Должно быть так: _requestRepository.Update(purchase) .
...
Рейтинг: 0 / 0
Type
    #39336330
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

А вот здесь есть она
Код: c#
1.
2.
3.
4.
5.
6.
        [HttpPut("{id:int}")]
        public IActionResult Update(int id, [FromBody] Purchase purchase)
        {
            var task = _requestRepository.Update(id, purchase);
            return new ObjectResult(task.Result);
        }


Тогда я впервые вижу, чтобы ViewModel передавали в репозиторий :)

А если серьёзно, то почему у Вас поля в модели не заполнены?

Потому что идет такой запрос
...
Рейтинг: 0 / 0
Type
    #39336339
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ вот жто: _requestRepository.Update(id, purchase) , - фигня какая-то. Должно быть так: _requestRepository.Update(purchase) .
ок, спасибо.
...
Рейтинг: 0 / 0
Type
    #39336376
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть поле Created, как сделать так чтобы оно не участвовало в Update?
...
Рейтинг: 0 / 0
Type
    #39336529
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Тогда я впервые вижу, чтобы ViewModel передавали в репозиторий :)

А если серьёзно, то почему у Вас поля в модели не заполнены?

Потому что идет такой запрос


И зачем самому себе создавать трудности?
...
Рейтинг: 0 / 0
Type
    #39337825
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...


Потому что идет такой запрос


И зачем самому себе создавать трудности?
Это точно, поменял.
...
Рейтинг: 0 / 0
Type
    #39338930
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как лучше хранить статус в заявке просто его код или с заголовком?
...
Рейтинг: 0 / 0
Type
    #39339032
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max, с заголовком, он небось в списке каком отображается.

Вам разве самому сложно понять, где какие данные нужны?
...
Рейтинг: 0 / 0
Type
    #39339195
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_max, с заголовком, он небось в списке каком отображается.

Вам разве самому сложно понять, где какие данные нужны?
Первый опыт, хочется сразу правильно делать.
...
Рейтинг: 0 / 0
Type
    #39340072
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас я юзера добавляю в контроллере, а как это вынести в репозитрий,
как его туда проталкивать?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public IActionResult Add([FromBody] Purchase request)
        {
            var identity = User.Identity as ClaimsIdentity;
            var userId = (from c in identity.Claims
                where c.Type == "Id"
                select c.Value).First();
            var user = _userRepository.GetById(userId);
            request.Author = new RequestUser()
            {
                Id = user.Id,
                Name = user.Name,
                LastName = user.LastName,
                SecondName = user.SecondName,
                Position = user.Position
            };
            request.Products = new List<PurchaseProduct>();
            request.Status = new RequestStatus() {Id = "draft", Title = "Черновик"};
            var task = _requestRepository.Add(request);
            return new JsonResult(new {id = task.Result});
        }



Делать так?
Код: c#
1.
_requestRepository.User = User.Identity
...
Рейтинг: 0 / 0
Type
    #39340242
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max, а зачем его в репозиторий проталкивать?
...
Рейтинг: 0 / 0
Type
    #39340395
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_max, а зачем его в репозиторий проталкивать?
в репозитории я хочу прописать всю логику добавления в монгу..
сделал пока так
Код: c#
1.
2.
3.
4.
5.
6.
7.
[HttpPost("{id:int}/approval")]
        public IActionResult AddApproval(int id)
        {
            _requestRepository.User = User.Identity as ClaimsIdentity;
            var task = _requestRepository.AddApproval(id);
            return new ObjectResult(new {id = task.Result});
        }
...
Рейтинг: 0 / 0
Type
    #39340531
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAmr_max, а зачем его в репозиторий проталкивать?
в репозитории я хочу прописать всю логику добавления в монгу..
Добавлению в монгу чего? Описание шаблона Репозиторий читали?

Посредничает между уровнями области определения и распределения данных (domain and data mapping layers), используя интерфейс, схожий с коллекциями для доступа к объектам области определения.

Имхо ClaimsIdentity не относится к вашей предметной области, к вашему domain.
...
Рейтинг: 0 / 0
Type
    #39340561
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

в репозитории я хочу прописать всю логику добавления в монгу..
Добавлению в монгу чего? Описание шаблона Репозиторий читали?

Судя по картинке я делаю не правильно(
https://msdn.microsoft.com/en-us/library/ff649690.aspx
Нужно auery отдавать в контроллер, а он уже будет его крутить вертеть, так?
...
Рейтинг: 0 / 0
Type
    #39340679
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть коллекция requests_approval - процесс согласования.

нужно ли там хранить id заявки, если хранить id согласования в заявки, то при изменении процесса согласования, приходится читать заявку сначала, и вытаскивать оттуда id согласования,

как быть?
...
Рейтинг: 0 / 0
Type
    #39340842
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

Добавлению в монгу чего? Описание шаблона Репозиторий читали?

Судя по картинке я делаю не правильно(
https://msdn.microsoft.com/en-us/library/ff649690.aspx
Нужно auery отдавать в контроллер, а он уже будет его крутить вертеть, так?
Если по картинке, то нужно Business Entity отдавать.
...
Рейтинг: 0 / 0
Type
    #39340844
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть экземпляр типа Purchase.
...
Рейтинг: 0 / 0
Type
    #39340845
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxЕсть коллекция requests_approval - процесс согласования.

нужно ли там хранить id заявки, если хранить id согласования в заявки, то при изменении процесса согласования, приходится читать заявку сначала, и вытаскивать оттуда id согласования,

как быть?А зачем сейчас в зявке id согласования?
...
Рейтинг: 0 / 0
Type
    #39340888
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxЕсть коллекция requests_approval - процесс согласования.

нужно ли там хранить id заявки, если хранить id согласования в заявки, то при изменении процесса согласования, приходится читать заявку сначала, и вытаскивать оттуда id согласования,

как быть?А зачем сейчас в зявке id согласования?
Ну как зачем, наверно по привычке делаю как в sql.
предлагаете убрать его оттуда?
...
Рейтинг: 0 / 0
Type
    #39340961
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...
А зачем сейчас в зявке id согласования?
Ну как зачем, наверно по привычке делаю как в sql.
предлагаете убрать его оттуда?
При чём тут SQL? С точки зрения логической модели зачем в заявке ссылаться на согласование? С точки зрения предметной области? С точки зрения ваших процессов?
...
Рейтинг: 0 / 0
Type
    #39340990
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_maxпропущено...

Ну как зачем, наверно по привычке делаю как в sql.
предлагаете убрать его оттуда?
При чём тут SQL? С точки зрения логической модели зачем в заявке ссылаться на согласование? С точки зрения предметной области? С точки зрения ваших процессов?
Для того, чтобы в карточке заявки видеть процесс согласования.
...
Рейтинг: 0 / 0
Type
    #39340998
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAпропущено...

При чём тут SQL? С точки зрения логической модели зачем в заявке ссылаться на согласование? С точки зрения предметной области? С точки зрения ваших процессов?
Для того, чтобы в карточке заявки видеть процесс согласования.
Это не с точки зрения предметной области, это с точки зрения конкретной реализации UI :)
По мне так вполне вероятна ситуация, когда был один процесс согласования, в результате которого было решено обосновать в заявке одно, выкинуть другое и т.п.
Переделали заявку, и запустили повторный процесс согласования. Что говорит нам о том, что в заявке не надо хранить id процесса, т.к. одной заявке может соответсвовать несколько процессов согласования.
...
Рейтинг: 0 / 0
Type
    #39341001
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max, но если у Вас иначе, то вероятно можно сделать и так как Вы.
...
Рейтинг: 0 / 0
Type
    #39341946
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_max, но если у Вас иначе, то вероятно можно сделать и так как Вы.
Сделаю пока как вы предлагаете, а там видно будет
...
Рейтинг: 0 / 0
Type
    #39342337
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо :)

Кстати по поводу:
mr_maxприходится читать заявку сначала, и вытаскивать оттуда id согласования
В MongoDB поддерживаются покрывающие индексы, а C# драйвер поддерживает проекции. Так что очень быстро можно вытащить id согласования из памяти даже при хранении последнего вместе с заявкой.
...
Рейтинг: 0 / 0
Type
    #39342480
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь нужно узнавать для юзера который заходит на страницу списка заявок, есть ли заявки этого типо у него на согласовании.
это мне надо в коллекции approval, сделать поле
request = {
Id : 'ид заявки',
Type: 'тип заявки'
}

и потом филmтровать по ним
правильно?
...
Рейтинг: 0 / 0
Type
    #39342489
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_max, Вам виднее.
...
Рейтинг: 0 / 0
Type
    #39342661
Фотография mr_max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAmr_max, Вам виднее.
А как сделать следующие мне надо вывести заявки которые у меня на согласовании.

ид заявки только в коллекции approvals находится, там же находится и ид пользователя.
Сделать с помощью linq AsQueryable или сначала узнать все ид заявок в коллекции approvals.
А потом их запросить у коллекции requests?
...
Рейтинг: 0 / 0
Type
    #39342800
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_maxskyANAmr_max, Вам виднее.
А как сделать следующие мне надо вывести заявки которые у меня на согласовании.
В каком виде?
...
Рейтинг: 0 / 0
Type
    #39342805
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё зависит от того, где какие конкретно данные нужны и как с этими данными работают.
...
Рейтинг: 0 / 0
196 сообщений из 196, показаны все 8 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Type
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]