powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь один к одному EF Code First
357 сообщений из 357, показаны все 15 страниц
Связь один к одному EF Code First
    #38783563
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, подскажите пожалуйста как связь один к одному сделать в Code First логике EF.
У меня есть таблица "Карточки", с полями: НомерКарточки и ИдЗаписи.
И есть таблица "Записи" где есть ИдЗаписи и ещё несколько чисто информативных полей, дата, время...

Так вот, когда выдается карточка в таблицу "Карточки" записывается НомерКарточки, допустим "1" и ИдЗаписи допустим "21". Соответственно в таблицу "Записи" записывается ИдЗАписи (21) и остальные информативные поля. Когда карточка возвращается, мы находим в поле НомерКарточки номер возвращенной карточки (1) и удаляем эту запись, при этом в таблице "Записи" всё остается.
Т.е. таблица "Карточки" должна быть такая, динамическая, я ее хотел без поля Id сделать, но на сколько я понял, в CodeFirst без поля ID не обойтись.

Подскажите как правильней будет организовать поля в табице? Я так понимаю связь создается один к одному, но не возникнет ли у меня проблем при удалении из таблицы "Карточки"? Как сделать уникальное поле "НомерКарточки"? т.е. чтобы цифры там не повторялись. И обязательно ли поле Id? Как можно без него обойтись? Был бы очень признателен примеру подобного класса!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783630
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного снизошло озарение, сделал так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    public class Card
    {
        public int Id { get; set; }
        
        public int CardNumber { get; set; }

        public virtual Person Person { get; set; }
    }

    public class Person
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public System.DateTime Date { get; set; }

    }


Надеюсь что правильно составил, хотя поле CardNumber наверняка не уникальное...

Теперь не знаю как вывести в один дата грид связанные таблицы? Получается только либо одну, либо другую:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        public DataTable GetAll()
        {
            using (var context = new MyDbContext())
            {
                IList<Card> cards = context.Cards.ToList();

                return cards.ToDataTable<Card>();
            }
        }
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783636
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если связь действительно 1:1, то "ID записи" не нужно. Зачем вводить лишнюю сущность? При связи 1:1 используется единый ключ. Класс при этом в CF объявляется так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    public class Card
    {
        public int Id { get; set; }
    
        ///...    другие поля
    }

    public class Person : Card
    {

        public string Name { get; set; }

        public System.DateTime Date { get; set; }

    }


тогда, делая выборку из Card вы получите выборку из двух таблиц
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783648
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот даже как... А при это я смогу удалять записи из Таблицы Cards, но чтобы в таблице Person связанные записи оставались?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783658
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ещё вопрос, а как всё таки мне теперь из таблицы Cards всё вытащить? по прежнему вытаскивается только два поля...
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783700
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuВот даже как... А при это я смогу удалять записи из Таблицы Cards, но чтобы в таблице Person связанные записи оставались?Нет. Это тогда уже не связь 1:1 будет.

viton-zizuи ещё вопрос, а как всё таки мне теперь из таблицы Cards всё вытащить? по прежнему вытаскивается только два поля...Откуда там два поля? Там сейчас всего одно поле - Id. A вот в Person - три поля.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783731
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я понял уже что это не то что мне нужно))
Откатился назад к моей прежней схеме сущностей.
Суть в том что мне нужно с таблицы Cards записи будет удалять и чтобы при этом записи в Persons оставались!
Запись в базу у меня получается, там ничего сложного, но вот вывод связанных таблиц не удается, либо одна, либо вторая выводятся таблицы, а как все таки связать!? Как то же люди такие связи реализуют... в инете примеры только с одной таблицей
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783744
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, какие связи-то? Какие у Вас отношения между Карточками и Человеками?

Зачем к примеру Человеков от Карточек наследовать?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783772
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Связь как я представлял себе 1 к 1.Т.е. одна карточка может соответствовать только одному человеку и наоборот
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783786
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuСвязь как я представлял себе 1 к 1.Т.е. одна карточка может соответствовать только одному человеку и наоборотнадо определиться, где находиться первичный ключ (первичные ключи), тогда будет понятно со связями. Если первичные ключи в каждой таблице свои, то это никак в схему 1:1 не вписывается, можно только ограничение на уникальность поля поставить в таблице, но это будет 1:M
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783800
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первичные ключи и там и там, следовательно 1:М.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783803
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну раз так, при выборке из Card использовать .Include(n => n.Person)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783820
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuСвязь как я представлял себе 1 к 1.Т.е. одна карточка может соответствовать только одному человеку...Не факт.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783823
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но у одного человека может быть несколько карточек :)
P.S.: от термина "карточка" попахивает DocsVision
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783870
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНу раз так, при выборке из Card использовать .Include(n => n.Person)
Воот! Сейчас опробую!)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783878
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как записи в таблицу добавлять, я делаю так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        ClubMember personModel = new Person()
                    {
                        Id = 0,
                        Name = txtName.Text.Trim(),
                        Date = System.DateTime.Now,
                        TimeBack = null,
                        Follower = txtFollower.Text.Trim(),
                        Direction = txtDirection.Text.Trim(),
                        WhoGiveAndSerial = txtWhoGiveAndSerial.Text.Trim(),
                    };
                    Card cardModel = new Card()
                    {
                        Id = 0,
                        CardNumber = Convert.ToInt32(nmcCardNumber.Text.Trim()),
  *                      Person = personModel,
                    };


И у меня почему то два раза добавляется в таблицу Person и один раз в Card, стоит только удалить поле с *, так все нормально записывается, но соответственно в это поле ничего не попадает и я не могу зависимости прописать!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783923
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создавайте сущности не через new, а через контекст
Persons.Add....
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783933
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я их вроде так и создаю, это все потом передается вот сюда:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        public bool Create(Card card)
        {
            using (var context = new MyDbContext())
            {
                context.Cards.Add(card);
                return context.SaveChanges() > 0;
            }
        }


то есть полностью формирую card а потом уже с помощью add добавляю
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783945
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавный выходит топик. Вроде как EF должен ускорить разработку, а тут танцы с бубном какие-то выходят.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783953
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут:
Код: c#
1.
Person = personModel,


personModel еще не принадлежит контексту
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38783958
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗабавный выходит топик. Вроде как EF должен ускорить разработку, а тут танцы с бубном какие-то выходят.для нормальной разработки без EF нужно знать SQL. Для нормальной разработки на EF нужно знать EF и... SQL
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784001
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProskyANAЗабавный выходит топик. Вроде как EF должен ускорить разработку, а тут танцы с бубном какие-то выходят.для нормальной разработки без EF нужно знать SQL.NoSQL набирает обороты, так что не обязательно :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784781
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЗабавный выходит топик. Вроде как EF должен ускорить разработку, а тут танцы с бубном какие-то выходят.

Топик забавен только тем, что люди не умеют пользоваться поиском. Решение находится на раз-два, это делается ОЧЕНЬ просто и легко. Но надо же развести демагогию на пустом месте
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784784
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANANoSQL набирает обороты, так что не обязательно :)

Реляционные СУБД и NoSQL даже рядом не взаимозаменяющие вещи, хотя позиционируются они почему-то в формате SQL vs. NoSQL.

Это примерно из того же разряда, что «Кошерный гиковый JavaScript набирает обороты и очень скоро похоронит C, C++, Java, C# и прочие убогие языки»
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784839
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх на мусолили, а по делу то никто и не подсказал!) Проблема была в том, что нужно только один контекст создавать!) и не запихивать лишние поля с Id

У меня такие сложности с освоением code first в связи с тем, что мало статей на русском, в которых бы развернуто все объяснялось. Примеров тоже не много удалось найти, которые находил, были в одну таблицу, т.е. совсем тривиальные. Находил хорошие статьи на английском, но они довольно массивны, а их проблематично читать
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784855
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANANoSQL набирает обороты, так что не обязательно :)

Реляционные СУБД и NoSQL даже рядом не взаимозаменяющие вещи, хотя позиционируются они почему-то в формате SQL vs. NoSQL.Это у тебя в голове они так позиционируются, а я такого не писал :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784858
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuЭх на мусолили, а по делу то никто и не подсказал!) Проблема была в том, что нужно только один контекст создавать!) и не запихивать лишние поля с Id

У меня такие сложности с освоением code first в связи с тем, что мало статей на русском, в которых бы развернуто все объяснялось. Примеров тоже не много удалось найти, которые находил, были в одну таблицу, т.е. совсем тривиальные. Находил хорошие статьи на английском, но они довольно массивны, а их проблематично читатьНу так надо было взять книжку по ADO.NET и по шаблонам проектирования (их-то на русском завались), и написать простой и рабочий код.
Столько времени убивать на проект величины "БД будет простая, 2-3 таблицы от силы, возможно и в одну уложусь".
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784860
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги интересно на это как смотрят. "Там база на три таблицы, а он второй месяц возится".

Так?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784878
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuпо делу то никто и не подсказал!) Проблема была в том, что нужно только один контекст создавать!)а где в ваших примерах два контекста? не надо переваливать на здоровую голову
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784894
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНу раз так, при выборке из Card использовать .Include(n => n.Person)
По пробовал
using (var context = new MyDbContext())
{
IList<Card> cards = context.Cards.Include("Persons").ToList();
}
Выдает ошибку: Указан недопустимый путь Include...свойство навигации с именем "Persons"
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784907
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proviton-zizuпо делу то никто и не подсказал!) Проблема была в том, что нужно только один контекст создавать!)а где в ваших примерах два контекста? не надо переваливать на здоровую голову
Sorry) и вправду нужного не выложил))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784917
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuInclude("Persons")Shocker.ProInclude(n => n.Person)найдите 10 отличий
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784922
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел)) а что такое тогда n в данном примере?))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784926
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
параметр типа Card
Include даст указание подгрузить данные из связанного набора
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784945
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему то Include в качестве параметра принимает только string, поэтому подобный пример у меня вызывает ошибку!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784961
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
using System.Data.Entity;
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784982
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, ну это клиника уже))
Спасибо большущее!))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38784993
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, а ошибка то осталась!
"Указан недопустимый путь Include... не объявляет свойство навигации с именем "Name"
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785005
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и где в моем примере Name?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785008
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, пора признать, что не получилось быстро внедрить EF в рабочий проект, и переписать код на то, в чём хорошо разбираетесь.

А EF продолжить изучать в свободное время.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785018
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proи где в моем примере Name?
Делаю так: IList<Card> cards = db.Cards.Include(n => n.Person).ToList(); (Person это поле из Cards)
То выводится, но ерунда,один два столбка из Cards, как и нужно и всего один столбец заполненный "MyDataBase.Data.Entities.Person"
По пробовал второй вариант
IList<Card> cards = db.Cards.Include(n => n.Person.Name).ToList(); Думал что конкретное одно поле при инклюдится, но данная ошибка выползла))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785021
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAviton-zizu, пора признать, что не получилось быстро внедрить EF в рабочий проект, и переписать код на то, в чём хорошо разбираетесь.

А EF продолжить изучать в свободное время.
Да проект уже сдан давно)) Это я для себя)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785052
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuПо пробовал второй вариантто есть я должен был догадаться, как вы извращаетесь, чтобы ответить на это:viton-zizuблин, а ошибка то осталась!
"Указан недопустимый путь Include... не объявляет свойство навигации с именем "Name"вы забываете, что мне не видно вашего экрана и неизвестно, какие странные мысли вам приходят в голову.


viton-zizuДелаю так: IList<Card> cards = db.Cards.Include(n => n.Person).ToList(); (Person это поле из Cards)А толку-то? То, что вы подключили коллекцию Person к выборке совсем не значит, что она попадет в List методом ToList(). Воспользуйтесь .Select(), чтобы сделать нужную выборку, и вообще, подучите LinQ для начала.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785069
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТо, что вы подключили коллекцию Person к выборке совсем не значит, что она попадет в List методом ToList()Точнее, попадет, конечно, но не на "верхний" уровень, а так и останется подчиненным полем элемента коллекции
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785106
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нету на примете хорошей статейки?) был бы очень признателен)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785116
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЭто у тебя в голове они так позиционируются, а я такого не писал :)

Вот не увиливай
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785124
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuА нету на примете хорошей статейки?) был бы очень признателен)

Так а чо, гугол уже попал под санкции??

Ладно уж, так и быть, поищу за тебя:

http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx
http://stackoverflow.com/questions/3622572/how-to-declare-one-to-one-relationship-using-entity-framework-4-code-first-poco
http://stackoverflow.com/questions/7689532/entity-framework-code-first-one-to-one-relationship
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785212
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЭто у тебя в голове они так позиционируются, а я такого не писал :)

Вот не увиливай Я не увиливаю: 16705748 .
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785215
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuА нету на примете хорошей статейки?) был бы очень признателен)О, здравая мысль! Почитать для начала книжку, статью, документацию, а не программировать при помощи интуиции и форума :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38785225
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttviton-zizuА нету на примете хорошей статейки?) был бы очень признателен)

Так а чо, гугол уже попал под санкции??

Ладно уж, так и быть, поищу за тебя:

http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx
http://stackoverflow.com/questions/3622572/how-to-declare-one-to-one-relationship-using-entity-framework-4-code-first-poco
http://stackoverflow.com/questions/7689532/entity-framework-code-first-one-to-one-relationship

Да ему уже не EF нужен. Нужна статья, как делать выборки с помощью .Select в Linq
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786206
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttпропущено...
Так а чо, гугол уже попал под санкции??

Ладно уж, так и быть, поищу за тебя:

http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx
http://stackoverflow.com/questions/3622572/how-to-declare-one-to-one-relationship-using-entity-framework-4-code-first-poco
http://stackoverflow.com/questions/7689532/entity-framework-code-first-one-to-one-relationship

Да ему уже не EF нужен. Нужна статья, как делать выборки с помощью .Select в Linq
Вооот, в точку!) Я просто думаю, где у меня пробел, читаю статьи про Entity а там нигде этого ничего нет!
Вчера гуглил Entity Linq вот это уже другое дело)) Вчера немного на воял по другому,
Код: c#
1.
2.
3.
4.
5.
6.
7.
var cards = db.Cards.Select(c => 
                new {
                    CardNumber = c.CardNumber,
                    Name = c.Person.Name,
                    Date = c.Person.Date
                }
            ).ToList();


круто круто круто)))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786269
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, помогите разобраться еще с проблемкой
Ищу по Id карточку, нахожу её но поле Person равно null! Не могу понять как такое может быть? в базе это поле заполнено...
Код: c#
1.
2.
var db = new MyDbContext()
var card = db.Cards.Find(id);


Смотрю в дебаге, а там допустим: Id = 3, CardNumber = 5, Person = null
Смотрю в баз данных: Id = 3, CardNumber = 5, PersonID = 8, т.е. поле точно не пустое...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    public class Person
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public System.DateTime Date { get; set; }

    }


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
    public class Card
    {
        public int Id { get; set; }
        
        public int CardNumber { get; set; }

        public Person Person{ get; set; }
    }


Не могу понять в чем ошибка то?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786279
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786296
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я вот допустим их Include, так а потом как Find по id сделать в этой объединенной таблице?)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786298
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получилось)
Код: c#
1.
var member = db.Cards.Include(x => x.Person).Where(i => i.Id == id).SingleOrDefault();
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786301
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но самое интересное что Id и в одной и в другой таблице полностью совпадают, как ни крути) Можно было этим и не заморачиваться)) хотя лучше конечно по феншую сделать
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786325
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно ли от редактировать только одно поле в строке?
Делаю так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
                  Person personModel= new Person()
                    {  Id = id
                        TimeBack = System.DateTime.Now,
                    };
var db = new MyDbContext())
            {
                db.Persons.Attach(personModel);
                db.Entry(personModel).State = EntityState.Modified;                
                return db.SaveChanges() > 0;


Ошибка говорит, внутренняя...)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786337
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты пытаешься создать НОВЫЙ экземпляр, а потом присвоить ему id другого существующего экземпляра?
Что ж тебя так заносит-то все время, поменяй траву... на подорожник )

Надо поменять поле - получил сущность из базы, поменял поле, сохранил изменение. Не надо создавать новый экземпляр.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786385
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот такой вариант у меня работает если все поля заполнить, причем обновляет как надо!
А нету примера другого обновления, а то у меня только такой был))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786391
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот твой же код:
Код: c#
1.
var member = db.Cards.Include(x => x.Person).Where(i => i.Id == id).SingleOrDefault();

меняешь нужное поле и делаешь db.SaveChanges()
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786434
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, вот по навыдумываешь себе в голове, а тут все так просто оказалось! спасибо большое!)
Буду на выходных дальше Linq осваивать))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786443
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Горе от ума" (с)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786467
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще не нашел, как мне поле CardNumber сделать уникальным? чтобы нельзя было повторяющиеся значения хранить!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786478
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786519
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38786972
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuА я вот допустим их Include, так а потом как Find по id сделать в этой объединенной таблице?)

Забудь навсегда про Include. Никогда не используй Include. Никогда. Слышышь?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787166
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttviton-zizuА я вот допустим их Include, так а потом как Find по id сделать в этой объединенной таблице?)

Забудь навсегда про Include. Никогда не используй Include. Никогда. Слышышь?
Почему?) Лучше селектом?)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787192
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Облазил эти ссылки, ничего дельного не нашел, только говорят проверяй по базе, если нету такого то значение уникально. Но это же как то неправильно, полюбому должна быть нужная команда!
Код: c#
1.
db.Categories.Where(c => c.<имя атрибута> == <значение>)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787228
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, вопрос нормально задайте.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787230
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAviton-zizu, вопрос нормально задайте.я так понимаю, он про это:viton-zizuА еще не нашел, как мне поле CardNumber сделать уникальным? чтобы нельзя было повторяющиеся значения хранить!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787232
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProskyANAviton-zizu, вопрос нормально задайте.я так понимаю, он про это:viton-zizuА еще не нашел, как мне поле CardNumber сделать уникальным? чтобы нельзя было повторяющиеся значения хранить!Хорошо.

Чтобы нельзя было ХРАНИТЬ повторяющиеся значения, необходимо создать уникальный индекс (UNIQUE INDEX).

А теперь, уважаемый viton-zizu, задайте правильный вопрос гуглу :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787501
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот все вы витиевато подсказываете))
Сделал уже через проверку значения с таблице, благо там не много значений)
Вот допустим нашел вот такую форму [Required] но мой интерпритатор не понимает этого поля, нужно через using что-то подрубить?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787505
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuВот допустим нашел вот такую форму [Required]это атрибут, а не форма, если так нечетко формулировать вопросы, можно много чего интересного узнать... кроме того, что нужно viton-zizu но мой интерпритатор не понимает этого поля, нужно через using что-то подрубить?Нужно. А про Object Browser слышал что-нибудь?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787507
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuВот все вы витиевато подсказываете))
Сделал уже через проверку значения с таблицеДак переделайте, Вы же играетесь :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787508
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое "мой интерпретатор"?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787510
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, а поставьте себе ReSharper.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787620
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proviton-zizuВот допустим нашел вот такую форму [Required]это атрибут, а не форма, если так нечетко формулировать вопросы, можно много чего интересного узнать... кроме того, что нужно viton-zizu но мой интерпритатор не понимает этого поля, нужно через using что-то подрубить?Нужно. А про Object Browser слышал что-нибудь?
Хорошая штука кстати, совсем забыл про него!))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787622
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAviton-zizu, а поставьте себе ReSharper.
На сколько я знаю он платный)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787633
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuskyANAviton-zizu, а поставьте себе ReSharper.
На сколько я знаю он платный)он бесплатен для обучения... не дорого стоит для индивидуальной разработки... да и торренты никто не отменял
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787805
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за совет, по ковыряю его!)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38787822
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее это решарпер "поковыряет" Ваш код
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788830
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, а подскажите ещё такой вопрос, я строку подключения к базе данных занес в Settings, и при подключении беру от туда, но начал писать "Настройки" хочу эту строку через настройки менять, а он ошибку выдает здесь:
Код: c#
1.
Settings.Default.DbConnectionString = txtDBString.Text;


cannot be assigned to -- it is read only
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788845
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, Вы что, еще и английский не понимаете?
А строки подключения принято хранить в конфигурационном файле приложения (app.config, web.config), а не settings.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788849
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю, поэтому и спрашиваю, как удачней переделать, про config app вот допустим не знал, реализовал через него, все отлично, но как его там можно править!?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788877
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuЯ понимаю, поэтому и спрашиваю, как удачней переделать, про config app вот допустим не знал, реализовал через него, все отлично, но как его там можно править!?Очень просто:
Код: c#
1.
2.
using System.Configuration;
using System.Windows.Forms;


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
/// <summary>
/// Сохраняет изменённую строку подключения в файле конфигурации и обновляет соответствующую секцию,
/// чтобы при следующем обращении к ней последняя была считана с диска.
/// </summary>
private void DataSave()
{
    try
    {
        Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        ConnectionStringsSection section = configuration.ConnectionStrings;

        section.ConnectionStrings["Default"].ConnectionString = tbConnectionString.Text;

        configuration.Save(ConfigurationSaveMode.Modified);

        ConfigurationManager.RefreshSection(section.SectionInformation.Name);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, Resources.Caption_Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788881
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, и Вы для начала сами разобраться попробуйте. А то такое чувство складывается, что любой возникающий вопрос спешите на форуме задать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788883
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuпро config app вот допустим не зналКнижку уже купите себе.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788886
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изучаем C# - вот, как раз для Вас.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788920
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я конечно пытаюсь сам изучить вопрос, просто часто ошибки валяться, в которых довольно тяжело разобраться, допустим:
Код: c#
1.
2.
3.
4.
5.
6.
        public DbContext()
            : base(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)
        {
            Database.SetInitializer<DbContext>(new Initializer());
            Configuration.ProxyCreationEnabled = false;
        }


У меня валится на строчке с ConnectionString, с ошибкой: "Ссылка на объект не указывает на экземпляр объекта"
Хотя казалось бы в app config все присутствует:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
    </startup>
  <connectionStrings>
        <add name="ConnectionString" connectionString="Data Source=localhost;Initial Catalog=DB;Integrated Security=True;"/>
  </connectionStrings>
</configuration>



Если Делать через Settings таже самая строка отрабатывает...
Код: c#
1.
2.
3.
4.
5.
6.
7.
        public DbContext()
            : base(Settings.Default.DbConnectionString)
        {
            Database.SetInitializer<DbContext>(new Initializer());
            Configuration.ProxyCreationEnabled = false;

        }
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788969
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, пришлось час про гуглить, чтобы узнать что я не тот appconfig правил) Изменял от приложения, а нужно было от библиотеки которая непосредственно с базой у меня работает))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38788979
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот ещё интересует такой интересный вопрос!

Если допустим мой сервер БД временно не доступен, я вот думаю как мне поступать в таком случае!? Создавать локальную базу а после появления линка сливать её в общую или у Энтити на этот счет есть какой нибудь интересный механизм?)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38789008
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuНу вот, пришлось час про гуглить, чтобы узнать что я не тот appconfig правил) Изменял от приложения, а нужно было от библиотеки которая непосредственно с базой у меня работает))Это что, жалоба? :)

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

Книгу купите! Там разбирается по шагам как приложение написать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38789011
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuА вот ещё интересует такой интересный вопрос!

Если допустим мой сервер БД временно не доступен, я вот думаю как мне поступать в таком случае!? Создавать локальную базу а после появления линка сливать её в общую или у Энтити на этот счет есть какой нибудь интересный механизм?)Нету в Entity Framework никаких чудесных механизмов.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38790080
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAviton-zizuА вот ещё интересует такой интересный вопрос!

Если допустим мой сервер БД временно не доступен, я вот думаю как мне поступать в таком случае!? Создавать локальную базу а после появления линка сливать её в общую или у Энтити на этот счет есть какой нибудь интересный механизм?)Нету в Entity Framework никаких чудесных механизмов.
А по советуйте пожалуйста, есть ли смысл в описанном мной решении или может существует более рациональный вариант? Просто не хочется чтобы приложение навернулось, если БД не доступно)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38790131
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, Вы пытаетесь решить выдуманную проблему? В этом нет смысла.

А если реальну, то о чём вообще речь? О какой инфраструктуре?
Какой такой сервер ндоступен: в локальной сети, удалённый? Админы что предлагают?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38791826
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЗабудь навсегда про Include. Никогда не используй Include. Никогда. Слышышь? hVostt , ты не ответил, почему? Как иначе подгрузить навигационные свойства в сущность?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38792449
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttЗабудь навсегда про Include. Никогда не используй Include. Никогда. Слышышь? hVostt , ты не ответил, почему? Как иначе подгрузить навигационные свойства в сущность?
На самом деле тоже интересно! А то может он мульон лишних запросов к БД городит и можно как то это обойти)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38794333
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro hVostt , ты не ответил, почему? Как иначе подгрузить навигационные свойства в сущность?

Прям в сущность? Зачем? Лучше работать с проекцией:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var query = SomeRepository
   .Where(всякие условия)
   .OrderBy(всякая сортировка)
   Select(p => new {
        Id, Name, ComplexNavi1, ComplexNavi2,...
   });
 

return query.ToList();



усё

Берём токо то, что нужно.

Так конечно неудобно делать, лучше воркать с типизированными проекциями:

Код: c#
1.
2.
3.
4.
5.
6.
7.
var query = SomeRepository
   .Where(всякие условия)
   .OrderBy(всякая сортировка);

var result = query.Project().To<SomeDataView>();

return result.ToList();



Это проекции Automapper, в SomeDataView поля, которые нам нужны. Также можно делать Flatten проекции (в одной плоскости):

ClientName <-- Client.Name
ClientCount <-- Client.Count

Ну и т.д.

Использование Include ничего не даёт на самом деле, кроме мнимого упрощения, которое затем приведёт к неизбежным проблемам в тестировании и сопровождении.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38794336
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuНа самом деле тоже интересно! А то может он мульон лишних запросов к БД городит и можно как то это обойти)

Чтобы это обойти надо делать точно также как в типичном SQL (брать только то, что реально нужно), только с помощью LINQ. Тогда запросы будут компактными и быстрыми.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38794516
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, я так понял, что человек хочет получить полный граф объекта, а ты ему только часть полей зачем-то предлагаешь :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38795717
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Спасибо, не все правдо догнал, но попробую разобраться))


Ребят, по советуйте, пробую AutoComplete в textbox, Класс который предлагает варианты для автозаполнения textbox. Варианты для выпадающего списка генерю с помощью линк, получается каждый раз когда пользователь забивает этот textbox, в базу идет запрос. Я вот думаю, это правильно вообще!? Или сделать запрос один рас а потом уже этот массив строк где-нибудь хранить, но где тогда!? Вот голову ломаю как бы правильней сделать
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38795827
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizu, а чем запрос не устраивает? Долго выполняется?

Хранить можно на клиенте, в кэше. Можно elasticsearch заюзать. Зависит от конкретной задачи.

А для начала например можно LINQ запрос оптимизировать, или вообще переписать без использования LINQ.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38798136
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, я так понял, что человек хочет получить полный граф объекта, а ты ему только часть полей зачем-то предлагаешь :)

Ну так а чего морочиться, надо сразу всю базу данных в память загружать!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38798188
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, я так понял, что человек хочет получить полный граф объекта, а ты ему только часть полей зачем-то предлагаешь :)

Ну так а чего морочиться, надо сразу всю базу данных в память загружать! Мог бы промолчать, или извиниться за невнимательность. Зачем так толсто троллить?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799010
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМог бы промолчать, или извиниться за невнимательность. Зачем так толсто троллить?

Какая невнимательность? Что ещё за наезд? Я человеку предложил взять не «часть полей», а только то, что ему нужно. При чём под это определение могут попадать не поля, а целые объекты. Какие проблемы?

И что такое «полный граф» объекта? Вариант с Include -- это по сути и есть указание «то, что нужно», только тупой и уродский. И не исключена ситуация, что «полный граф» это и будет вся база данных.

В общем ты сам чего-то сморозил.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799200
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, у ТСа в базе, в таблице Persons содержаться персональные данные каких-то людей:
Код: c#
1.
2.
3.
4.
5.
6.
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime Date { get; set; }
}


и есть таблица каких-то карточек (Cards), что заведены для этих людей:
Код: c#
1.
2.
3.
4.
5.
6.
public class Card
{
    public int Id { get; set; }      
    public int CardNumber { get; set; }
    public Person Person{ get; set; }
}


ТС хочет выбрать данные определённой карточки по её идентификатору:
Код: c#
1.
2.
var db = new MyDbContext()
var card = db.Cards.Find(id);


Но такой запрос возвращает результат без персональных данных.
Чтобы включить последние в результат запроса, ТСу предложили использовать Include().

А ты сказал, что так плохо и начал на каких-то абстрактных примерах утверждать, что данные о Person вообще подгружать не надо.

Вообщем фигня какая-то :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799203
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAсодержаться содержатсяпоправил
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799318
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ну я смотрел описание - include в ef действительно нежедательно использовать, кроме самых простых случаев
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799333
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНо такой запрос возвращает результат без персональных данных.
Чтобы включить последние в результат запроса, ТСу предложили использовать Include().

А ты сказал, что так плохо и начал на каких-то абстрактных примерах утверждать, что данные о Person вообще подгружать не надо.

Вообщем фигня какая-то :)

И повторю: нет, не надо, если они не нужны. Если нужны, включаешь Person в запрос (LINQ), или получаешь его «лениво». Это единый и полностью управляемый способ получать данные. С помощью Include, например, нельзя указать брать из базы только те данные, которые не помечены как удалённые. В общем, я без понятия зачем вообще этот Include добавили в интерфейс. Бредятина какая-то.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799341
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли нужны, включаешь Person в запрос (LINQ), или получаешь его «лениво». Это единый и полностью управляемый способ получать данные.Дак вот и дай ТСУ пример, как ему вытащить полный объект типа Card по Id, а не разглагольствуй про проекции, возвращаемые абстрактными репозиториями.
Разве это так сложно для тебя?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799343
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

ну я смотрел описание - include в ef действительно нежедательно использовать, кроме самых простых случаевА я где-то с этим спорил? Мне не понравилось, что вместо нормального объяснения, ТСу предлагается совершенно не то, что ему надо.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799344
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДак вот и дай ТСУ пример, как ему вытащить полный объект типа Card по Id, а не разглагольствуй про проекции, возвращаемые абстрактными репозиториями.
Разве это так сложно для тебя?

Ты бредишь что ли? Ты сам-то до сих пор так и не предложил универсальный метод типа GetFullObjectById(), чего ты от меня хочешь? Укажешь ли ты что тебе брать через Include или через LINQ -- это всё равно чёткое указание что брать. Я сказал, что Include гумно, не пользуйтесь им никогда, лучше LINQ, проекции, Lazy -- по вкусу. Какие претензии?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799346
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМне не понравилось, что вместо нормального объяснения, ТСу предлагается совершенно не то, что ему надо.

Ааа.. так всё-таки экстрасенсы вышли из отпуска? Теперь будем знать
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799348
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

lazy в ef по описанию тоже говно (читает только один раз)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799349
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там какой то Load есть у ссылки, может лучше
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799350
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как у DataTable :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799355
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

lazy в ef по описанию тоже говно (читает только один раз)

Lazy делает ровно то, что требуется. Какое же это говно? С учётом кеширования, которое прикручивается к EF, это решает проблемы с лишними запросами к БД. Так всё пучком
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799358
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAДак вот и дай ТСУ пример, как ему вытащить полный объект типа Card по Id, а не разглагольствуй про проекции, возвращаемые абстрактными репозиториями.
Разве это так сложно для тебя?

Ты бредишь что ли? Ты сам-то до сих пор так и не предложил универсальный метод типа GetFullObjectById(), чего ты от меня хочешь? Укажешь ли ты что тебе брать через Include или через LINQ -- это всё равно чёткое указание что брать. Я сказал, что Include гумно, не пользуйтесь им никогда, лучше LINQ, проекции, Lazy -- по вкусу. Какие претензии?Обиделся что-ли? К чему бессмысленный срач разводишь?

Я не пользуюсь EF и QueryableExtensions, вот и не предлагаю ничего.

Ты согласен, что ТСу нужен полный объект, а не проекция?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799360
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAМне не понравилось, что вместо нормального объяснения, ТСу предлагается совершенно не то, что ему надо.

Ааа.. так всё-таки экстрасенсы вышли из отпуска? Теперь будем знать Ты меня поддеть что-ли пытаешься? :) Не нужно быть телепатом, чтобы посмотрев на куски кода ТС, понять, чего он хочет.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799389
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


Ты бредишь что ли? Ты сам-то до сих пор так и не предложил универсальный метод типа GetFullObjectById(), чего ты от меня хочешь? Укажешь ли ты что тебе брать через Include или через LINQ -- это всё равно чёткое указание что брать. Я сказал, что Include гумно, не пользуйтесь им никогда, лучше LINQ, проекции, Lazy -- по вкусу. Какие претензии?Обиделся что-ли? К чему бессмысленный срач разводишь?

Я не пользуюсь EF и QueryableExtensions, вот и не предлагаю ничего.

Ты согласен, что ТСу нужен полный объект, а не проекция?

Вот-вот, ты не пользуешься EF и ничего не предлагаешь. Ещё твой бессмысленный коммент:

skyANAЗабавный выходит топик. Вроде как EF должен ускорить разработку, а тут танцы с бубном какие-то выходят.

Никаких танцев с бубном. Просто ты этот инструмент не знаешь, следовательно я не понимаю смысла твоих наездов.

Так, для справки.

Полный объект, это совокупность его полей. Навигационные поля нужны для построения запросов в LINQ, хотя по ошибке воспринимаются как часть содержимого объекта -- но это не так, как бы оно не выглядело. Данные по навигационным полям не являются частью полного объекта. Так что ещё раз объясни, что ты хочешь донести?

Я топикастеру дал совет, каким образом собирать нужный срез данных, с помощью проекций, с помощью LINQ запросов, или получать данные «лениво», и дал совет не использовать Include. Ты с чем конкретно не согласен?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799390
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТы меня поддеть что-ли пытаешься? :) Не нужно быть телепатом, чтобы посмотрев на куски кода ТС, понять, чего он хочет.

Чего он хочет я не знаю, уже было достаточно сказано и про организацию связей 1-1 и как получать связанные данные. Пока ТС дополнительных вопросов не задавал. Значит всё в ажуре.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799396
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, зачем ты сюда ещё и навигационные поля-то притянул? ТС о них ничего не говорил :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799400
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПока ТС дополнительных вопросов не задавал. Значит всё в ажуре.А зачем ему вопросы задавать по тому, что ему не нужно? :) А как нужно у него уже работате: 16752158 .
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799402
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЧего он хочет я не знаю.Ты меня разочаровал. Код же тривиальный ( 16752158 ), по нему всё понятно.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799413
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, зачем ты сюда ещё и навигационные поля-то притянул? ТС о них ничего не говорил :)

Код: c#
1.
2.
3.
4.
5.
6.
public class Card
{
    public int Id { get; set; }      
    public int CardNumber { get; set; }
    public Person Person{ get; set; }
}



А это что, по-твоему?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799418
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttПока ТС дополнительных вопросов не задавал. Значит всё в ажуре.А зачем ему вопросы задавать по тому, что ему не нужно? :) А как нужно у него уже работате: 16752158 .

Это очевидно, плохой код. Но ТС виднее.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799424
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, ну я не знаю, давай на примере что-ли тебе объясню.

Вот есть у нас такой JSON:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
{
    id: 1,
    cartNumber: 'C-00001',
    person: {
        id: 7,
        name: 'Vasya',
        date: '1980-01-01'
    }
}


и есть код:
Код: c#
1.
2.
var serializer = new JavaScriptSerializer();
var card = serializer.Deserialize<Card>(json);


Вот это называется преобразовать JSON в граф объекта (полный).

ТСу нужно тоже самое, только данные не в JSON, а в БД. И при помощи EF :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799425
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТСу нужно тоже самое, только данные у него не в JSON, а в БД. И сделать это нужно не JavaScriptSerializer-ом, а при помощи EF :)Поправил.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799445
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВот это называется преобразовать JSON в граф объекта (полный).

ТСу нужно тоже самое, только данные не в JSON, а в БД. И при помощи EF :)

Ну ладно, спишем на то, что пример с JSON ты сам выдумал (ТС ничего про него не говорил).

JSON сериализует объект со всеми потрохами, для сериализатора в принципе нет понятия «навигационное свойство». А для EF вложенный объект, это на самом деле не вложенный объект, а внешняя связь с другим объектом. Ты сравниваешь пеликана и рябчика, просто потому что они «птицы», но сравнение некорректное. Поэтому «тоже самое» не получится, из-за нарушения банальной логики в рассуждениях.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799446
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТСу нужно тоже самое, только данные не в JSON, а в БД. И при помощи EF :)

И не забывай, что благодаря Lazy мы итак получаем «полный граф объекта» без плясок с бубнами. Вопросы с производительностью надо решать тогда, когда появляется необходимость. Нет нужды безсмысленно всё вкорячивать в «адын запрос». Нафига вообще страдать подобной ерундой?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799449
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

то есть Lazy не имеет собстенного кеша и смотрит на общий какой то кеш? как это все синхронизировано?
например Lazy загрузил в кеш какую то коллекцию, прога по каким то причинам удалила (remove) некорое количество из коллекции.
что будет делать Lazy в следующий раз?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799453
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВот это называется преобразовать JSON в граф объекта (полный).

ТСу нужно тоже самое, только данные не в JSON, а в БД. И при помощи EF :)

Ну ладно, спишем на то, что пример с JSON ты сам выдумал (ТС ничего про него не говорил).

JSON сериализует объект со всеми потрохами, для сериализатора в принципе нет понятия «навигационное свойство». А для EF вложенный объект, это на самом деле не вложенный объект, а внешняя связь с другим объектом. Ты сравниваешь пеликана и рябчика, просто потому что они «птицы», но сравнение некорректное. Поэтому «тоже самое» не получится, из-за нарушения банальной логики в рассуждениях.Как же с тобой трудно.

Пример я выдумал для иллюстрации того, что должно получиться на выходе, какой card, и что такое граф объекта (полный). Ты же сам спрашивал, что я хочу донести.
До примера-то ты чего докопался, привычка?

Зачем ты полез в дебри с пеликаном и рябчиком? Как это "тоже самое" не получится? ТС же получил. :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799457
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAТСу нужно тоже самое, только данные не в JSON, а в БД. И при помощи EF :)

И не забывай, что благодаря Lazy мы итак получаем «полный граф объекта» без плясок с бубнами. Вопросы с производительностью надо решать тогда, когда появляется необходимость. Нет нужды безсмысленно всё вкорячивать в «адын запрос». Нафига вообще страдать подобной ерундой?Чёрт, ну вот куда тебя несёт. Зачем ты начал рассказывать про то, когда полный граф нужен сразу, а когда следует использовать Lazy?
Умные бородатые дядьки давно про это уже расписали, а я прочитал и намотал на ус :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799512
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКак же с тобой трудно.

Пример я выдумал для иллюстрации того, что должно получиться на выходе, какой card, и что такое граф объекта (полный). Ты же сам спрашивал, что я хочу донести.
До примера-то ты чего докопался, привычка?

Зачем ты полез в дебри с пеликаном и рябчиком? Как это "тоже самое" не получится? ТС же получил. :)

А что трудного-то? Понять простейшую мысль, которую я озвучил: «Include — это плохо»? Реально, никак не получается одолеть? Я уже до 3-х слов сократил. Может на китайский перевести? Или на узбекский? Какие сложности с пониманием-то?

И не съезжай на ТС. Какие ещё дебри? Ты реально не понимаешь что такое навигационное свойство, и как оно работает? Загляни в исходники что ли. Навигационное свойство ≠ вложенный объект — так понятней?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799516
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧёрт, ну вот куда тебя несёт. Зачем ты начал рассказывать про то, когда полный граф нужен сразу, а когда следует использовать Lazy?
Умные бородатые дядьки давно про это уже расписали, а я прочитал и намотал на ус :)

Это то, что нужно ТС и подходит для твоего примера с JSON.

Поясню свою мысль ещё раз: «Include — это плохо». А чего когда следует использовать зависит от задачи. Или ты с чем-то не согласен? Заметь, я этот вопрос уже который раз задаю. С чем ты не согласен? Что не так?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799517
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAКак же с тобой трудно.

Пример я выдумал для иллюстрации того, что должно получиться на выходе, какой card, и что такое граф объекта (полный). Ты же сам спрашивал, что я хочу донести.
До примера-то ты чего докопался, привычка?

Зачем ты полез в дебри с пеликаном и рябчиком? Как это "тоже самое" не получится? ТС же получил. :)

А что трудного-то? Понять простейшую мысль, которую я озвучил: «Include — это плохо»? Реально, никак не получается одолеть? Я уже до 3-х слов сократил. Может на китайский перевести? Или на узбекский? Какие сложности с пониманием-то?

И не съезжай на ТС. Какие ещё дебри? Ты реально не понимаешь что такое навигационное свойство, и как оно работает? Загляни в исходники что ли. Навигационное свойство ≠ вложенный объект — так понятней?Алё, гараж!

Мне не интересны эти подробности, я не пользуюсь EF и не планирую.
Просто напиши код, что вернёт тоже самое, что сейчас возвращает ТС при помощи Include, но без Include.

Какие проблемы?

Я могу написать на чистом ADO.NET, на BLToolkit, NHibernate, Dapper. Но ТСу нужно на EF :)

Разве это сложно?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799528
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлё, гараж!

Мне не интересны эти подробности, я не пользуюсь EF и не планирую.
Просто напиши код, что вернёт тоже самое, что сейчас возвращает ТС при помощи Include, но без Include.

Какие проблемы?

Я могу написать на чистом ADO.NET, на BLToolkit, NHibernate, Dapper. Но ТСу нужно на EF :)

Разве это сложно?

Ты меня убиваешь. Зачем же ты тогда вклиниваешься в разговор о том, чего не знаешь?

ТС рассматривает навигационные свойства как вложенные объекты, и, соответственно, хочет получить их как вложенные типа одним запросом. То, что ты зачем-то называешь «графом», а это является не более чем внешними связями. EF даёт способ работать с ними как с вложенными объектами, загружая их лениво -- это более чем удовлетворяет требования ТС. С чем ты не согласен??????? Сколько раз можно у тебя просить ответить на этот вопрос? Ты не согласен ------ С ЧЁМ?

С

ЧЕМ

ТЫ

НЕ

СОГЛАСЕН?

А, мужчина? Не взрывай мозг!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799530
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ могу написать на чистом ADO.NET, на BLToolkit, NHibernate, Dapper. Но ТСу нужно на EF :)

А на чистом SQL, можешь?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799531
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, порылся в Яндексе.

Навигационные свойства и lazy loading

Include() в EF - это реализация так называемой "жадной загрузки" или eager loading . То есть как раз то, что нужно ТС.
И ничего плохого в данной конкретной задаче в нём нет.

А hVostt походу тупо фанат lazy loading и проекций (от Стаса видимо заразился). Вот только объяснить этого толком не способен.
Вообщем разобрались.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799534
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЛадно, порылся в Яндексе.

Навигационные свойства и lazy loading

Include() в EF - это реализация так называемой "жадной загрузки" или eager loading . То есть как раз то, что нужно ТС.
И ничего плохого в данной конкретной задаче в нём нет.

А hVostt походу тупо фанат lazy loading и проекций (от Стаса видимо заразился). Вот только объяснить этого толком не способен.
Вообщем разобрались.

Ну наконец-то ты хоть разобрался в вопросе. Плохого в Include настолько много, что лучше на самом раннем этапе от него навсегда отказаться.

Понимаю, что желание ТС Include удовлетворяет, но я предупреждаю, что будешь использовать Include -- поимеешь проблем в будущем.

Ты с этим не согласен?

Кстати, «Жадная загрузка» не уменьшает нагрузки на БД, а только увеличивает её, так что это плохо, и не надо говорить «ничего плохого нет», я конечно понимаю что тебе по барабану, но не стоит раздавать плохих советов.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799537
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВот только объяснить этого толком не способен.

И кстати, что за манера делать такие голословные утверждения?
Или это у тебя включён режим троллинга?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799540
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЛадно, порылся в Яндексе.

Навигационные свойства и lazy loading

Include() в EF - это реализация так называемой "жадной загрузки" или eager loading . То есть как раз то, что нужно ТС.
И ничего плохого в данной конкретной задаче в нём нет.

А hVostt походу тупо фанат lazy loading и проекций (от Стаса видимо заразился). Вот только объяснить этого толком не способен.
Вообщем разобрались.

Ну наконец-то ты хоть разобрался в вопросе. Плохого в Include настолько много, что лучше на самом раннем этапе от него навсегда отказаться.

Понимаю, что желание ТС Include удовлетворяет, но я предупреждаю, что будешь использовать Include -- поимеешь проблем в будущем.

Ты с этим не согласен?Не согласен. Ничего плохого в eager loading нет. Нужно просто понимать, где жадно загружать, а где лениво.

hVosttКстати, «Жадная загрузка» не уменьшает нагрузки на БД, а только увеличивает её, так что это плохо, и не надо говорить «ничего плохого нет», я конечно понимаю что тебе по барабану, но не стоит раздавать плохих советов.Глупости. Не зачем такой простой объект доставать в два запроса.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799546
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВот только объяснить этого толком не способен.

И кстати, что за манера делать такие голословные утверждения?
Или это у тебя включён режим троллинга? Никакого троллинга.

ИМХО ты распыляешься на какие-то проекции, абстрактные репозитории, какие-то эмоциональные выссказывания. Вообщем получается много букофф и мало толку.

Можно было просто объяснить, почему ты не любишь "жадную загрузу" и рекомендуешь "ленивую". И кусок кода для классов ТС приложить в качестве примера.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799556
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНикакого троллинга.

ИМХО ты распыляешься на какие-то проекции, абстрактные репозитории, какие-то эмоциональные выссказывания. Вообщем получается много букофф и мало толку.

Можно было просто объяснить, почему ты не любишь "жадную загрузу" и рекомендуешь "ленивую". И кусок кода для классов ТС приложить в качестве примера.

А похоже на троллинг. Мало толку для кого? Для тебя или для ТС? Почему ты решаешь за ТС или ещё за кого-то, не понимаю.

Объяснить я бы мог. Но пожалуйста, не поленись найти в топике вопрос «почему?» заданный мне на счёт Include? Разве должен я сам себе его задавать за кого-то и тут же на него отвечать? Ты уже сам запутался в показаниях.

И при чём тут любовь/нелюбовь -- ты по такому принципу что ли работаешь? Не люблю я оператор for, буду всегда использовать foreach
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799559
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

да ему пофиг все
отвечает на вопрос по еф, при этом не знает еф
отвечает на вопрос о редактировании таблиц, при этом не работает с таблицами и нифига не знает что это такое
думаю он и скл не знает
больной чек
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799561
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе согласен. Ничего плохого в eager loading нет. Нужно просто понимать, где жадно загружать, а где лениво.

Нужно понимать, что ты работаешь с реляционной СУБД и тогда все встанет на свои места. «Жадная загружка» -- это костыль, призванный скрыть этот факт, который оборачивается задницей. Не стоит лезть в задницу -- неужели это не очевидно?

skyANAГлупости. Не зачем такой простой объект доставать в два запроса.

И не надо. Возьми то, что тебе нужно одним запросом. Всю жизнь так с базами данных работали.
С другой стороны, с кешированием все вопросы с запросами снимаются, к EF кеш прикручивается. Проблем никаких не вижу.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799563
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosотвечает на вопрос по еф, при этом не знает еф

Это меня вообще в тупик ставит. Я же не лезу кому-то что-то доказывать в топики, где обсуждаются технологии и инструменты, с которыми я не работаю. Странно это всё, странно
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799564
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttОбъяснить я бы мог. Но пожалуйста, не поленись найти в топике вопрос «почему?» заданный мне на счёт Include? Разве должен я сам себе его задавать за кого-то и тут же на него отвечать? Ты уже сам запутался в показаниях.У тебя никаких паталогий не наблюдается?

Не поленился и нашёл: 16780441
hVosttЗабудь навсегда про Include . Никогда не используй Include. Никогда. Слышышь?Shocker.Pro hVostt , ты не ответил, почему? Как иначе подгрузить навигационные свойства в сущность?viton-zizuНа самом деле тоже интересно! А то может он мульон лишних запросов к БД городит и можно как то это обойти)Специально выделил тебе вопрос почему, заданный тебе на счёт Include.

Ну теперь-то объяснишь свою позицию? Только давай нормально, а не плохо, потому что я уже три раза сказал, что плохо.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799567
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

да ему пофиг все
отвечает на вопрос по еф, при этом не знает еф
отвечает на вопрос о редактировании таблиц, при этом не работает с таблицами и нифига не знает что это такое
думаю он и скл не знает
больной чекЧто за глупости ты пишешь?

Где я отвечал на вопрос по EF? Ссылку дать сможешь?
Где я отвечал на вопрос о редактировании таблиц? Ссылку дать сможешь?
С чего ты взял, что я не работаю с таблицами? С того что CMS модуль Абрикоса хранит данные в MongoDB и там есть контур конкурентного редактирования?

И небось уже бухнул на ночь глядя, что решил, что обзываться уже можно на форуме?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799568
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosотвечает на вопрос по еф, при этом не знает еф

Это меня вообще в тупик ставит. Я же не лезу кому-то что-то доказывать в топики, где обсуждаются технологии и инструменты, с которыми я не работаю. Странно это всё, странно Ну не строй из себя дурака. Мои замечания к тебе относились не к EF, а к тому, что ты совсем не то, что надо ТСу предлагаешь.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799572
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, Сахават, по твоей логике выходит, что ты сам больной человек. А учитывая, что скоро на пенсию, то сильно больной, нежели я :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799577
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ тебя никаких паталогий не наблюдается?

Не поленился и нашёл: 16780441

А ответ мой не забыл почитать? Я дал ответ, доп. вопросов не последовало. Но тут вмешался ты

skyANAСпециально выделил тебе вопрос почему, заданный тебе на счёт Include.

Ну теперь-то объяснишь свою позицию? Только давай нормально, а не плохо, потому что я уже три раза сказал, что плохо.

Позиция простая, уже в 2-х словах: «Include — плохо».

Почему плохо?

1. Include это EF-specific, зависимость от сборки с EF — самый основной минус в «карму»
2. Include в абсолютном большинстве случаев создаёт SQL-запрос с сильно избыточным результатом
3. Include не позволяет указать ограничения (примеры: по доступу, по маркеру «удалён», по другим хар-кам)
4. Include приходится указывать для каждого свойства, которое требуется подгрузить, а их может быть много, если загружаемые объекты имеют ещё вложенные свойства, их тоже требуется указывать, таким образом летит к чертям концепция «загрузки графа объекта», кроме того снижается «порог чувствительности» того, что мы работаем с реляционной БД, а это может сильно ударить (и обязательно не раз ударит) по темечку
5. В противовес Include -- если объект был загружен в сессии контекста, то обращение к навигационному свойству не вызовет обращение к базе данных. Пример:

Код: c#
1.
2.
3.
4.
5.
6.
7.
var o = Context.Carts.Where(p => p.Id = someId).Select(p => new { Cart = p, Person = p.Person }).Single();

var cart = o.Cart;

// получаем Person

var person = cart.Person; // здесь уже НЕ будет дополнительного обращения к базе данных, так как Person уже получен



Соответственно, накуй этот костыль Include не нужен. Забыть навсегда и никогда не вспоминать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799578
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

я тебя специально поддел, что бы ты понял, что пора перестать обзывать других глупцами
видишь как больно?
из за того что тебе непонятно по каким то причинам речь другого, не надо обзываться, просто пропусти мимо и все :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799579
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу не строй из себя дурака. Мои замечания к тебе относились не к EF, а к тому, что ты совсем не то, что надо ТСу предлагаешь.

Так ты личный представитель ТС я не понял? ТС вопросов не задаёт, а задаёшь их ты, значит это надо тебе, а не ему. Вообще никто не знает, зайдёт ли ТС ещё когда-нибудь в этот тред, так что не надо строить из себя помогающую ТС-у мать Терезу
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799581
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в не пью, не дую и т.д. и мне правда до пенсии 2 года (не дождетесь конечно :)) потому полече воще то
если пишу непонятно но это интересно тебе то попробуй разобраться, а не интересно так мимо и все
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799583
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТС вопросов не задаёт, а задаёшь их ты, значит это надо тебе, а не ему.не-не, вопрос-то задал я и с удовольствием и познаванием слежу за топиком
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799585
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

а почему бы Include не вынести за скобки?
типа загрузить по всем навигационным?

почему скл избыточен?
по идее include должна возвращать несколько резульсетов или она генерирует лефт джойны и потом парсить в памяти?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799586
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа почему бы Include не вынести за скобки?
типа загрузить по всем навигационным?

Нет такого способа.

ViPRosпочему скл избыточен?

Избыточен не SQL, а результат.

ViPRosпо идее include должна возвращать несколько резульсетов или она генерирует лефт джойны и потом парсить в памяти?

Именно
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799587
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

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

ViPRosиз за того что тебе непонятно по каким то причинам речь другого, не надо обзываться, просто пропусти мимо и все :)Мне было не понятно то, почему ТСу, кто хочет "жадно" загрузить объект, предлагаются какие-то проекции. Я это озвучил.

Что тебя тут смущает?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799589
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttТС вопросов не задаёт, а задаёшь их ты, значит это надо тебе, а не ему.не-не, вопрос-то задал я и с удовольствием и познаванием слежу за топиком Вот! Не зря значит я тут докапываюсь до сути :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799593
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

инклюд в еф (со слов хвоста) строить лефт джойн - что не есть хорошо и воще ооочень плохо, так как при этом низзя загрузить даже дерево, не то что б граф

кроме того нет способа сразу задать инклюд для всего графа

потому инклюд в еф - говно
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799594
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в твоем монго (с твоих слов и по твоему прмеру) нет никакого графа объектов, а есть вложенная разметка
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799596
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а Хвост не ответил на мой вопрос про Лейзи и Кеш (как лейзи работает с кешем)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799598
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМне было не понятно то, почему ТСу, кто хочет "жадно" загрузить объект, предлагаются какие-то проекции. Я это озвучил.

Что тебя тут смущает?

Ты глубже посмотреть не пробовал? Предлагаются не «какие-то проекции», а более эффективный способ работать с данными.

Нужно же понимать, что пример с Cart.Person очень ограниченный, в реале объекты гораздо больше и схема сложнее. Поэтому Include и «жадные» загрузки неизбежно приведут к проблемам. Я человека пытаюсь оградить от этого, а ты непонятно чего хочешь. Типа говорят человеку, что для постройки дома нужны чертежи, ты же опираясь на пример с будкой, впариваешь, что чертежи ненужны, сойдёт и так.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799600
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа Хвост не ответил на мой вопрос про Лейзи и Кеш (как лейзи работает с кешем)

Работает кеш. Если в сессии объект был загружен, он не будет загружаться ещё раз.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799601
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

значит лейзи запросто можно обмануть?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799602
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosинклюд в еф (со слов хвоста) строить лефт джойн - что не есть хорошо и воще ооочень плохо, так как при этом низзя загрузить даже дерево, не то что б граф

кроме того нет способа сразу задать инклюд для всего графа

потому инклюд в еф - говно

Именно об этом и речь
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799603
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПозиция простая, уже в 2-х словах: «Include — плохо».

Почему плохо?

1. Include это EF-specific, зависимость от сборки с EF — самый основной минус в «карму»ТС писал на форуме о том, что знает SQL и ADO.NET, и в данный момент изучает именно специфику EF.

hVostt2. Include в абсолютном большинстве случаев создаёт SQL-запрос с сильно избыточным результатомА данный конкретный случай иллюстрирует, что результат именно тот, что нужен ТСу.

hVostt3. Include не позволяет указать ограничения (примеры: по доступу, по маркеру «удалён», по другим хар-кам)А этого и не требуется.

hVostt4. Include приходится указывать для каждого свойства, которое требуется подгрузить, а их может быть много, если загружаемые объекты имеют ещё вложенные свойства, их тоже требуется указывать, таким образом летит к чертям концепция «загрузки графа объекта», кроме того снижается «порог чувствительности» того, что мы работаем с реляционной БД, а это может сильно ударить (и обязательно не раз ударит) по темечкуЭто всё понятно, но опять-таки описанная ситуация не относится к задаче ТСа.

hVostt5. В противовес Include -- если объект был загружен в сессии контекста, то обращение к навигационному свойству не вызовет обращение к базе данных. Пример:

Код: c#
1.
2.
3.
4.
5.
6.
7.
var o = Context.Carts.Where(p => p.Id = someId).Select(p => new { Cart = p, Person = p.Person }).Single();

var cart = o.Cart;

// получаем Person

var person = cart.Person; // здесь уже НЕ будет дополнительного обращения к базе данных, так как Person уже получен

В случа с Include() "дополнительного обращения к базе" тоже не будет. Причём мы явно это знаем.

hVosttСоответственно, накуй этот костыль Include не нужен. Забыть навсегда и никогда не вспоминать.Не согласен. Для задачи ТС Include() прекрасно подходит.

А что, в EF нет другого способа "жадной загрузки"? В статье только Include() упоминается.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799604
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. полагаемся только на стратегию кеширования
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799605
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

значит лейзи запросто можно обмануть?

Да, пример выше я привёл. Ну только это не обман, а нормальное поведение.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799606
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе согласен. Для задачи ТС Include() прекрасно подходит.

Для какой задачи? Ты УВЕРЕН что знаешь задачу ТС? Он привёл один маленький примерчик. Думаешь это и есть задача? Ахааххаах... это... довольно мило, если ты так считаешь
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799608
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

"жадная" в математике определено, потому скорее это "полная"
воще то я считаю что ОРМ только и нужен для того что бы одним махом загрузить объект или его проекции
при этом хорошо бы иметь и лейзи

получается что в ЕФ нет ни того, ни другого :(
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799610
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНе согласен. Для задачи ТС Include() прекрасно подходит.

Для какой задачи? Ты УВЕРЕН что знаешь задачу ТС? Он привёл один маленький примерчик. Думаешь это и есть задача? Ахааххаах... это... довольно мило, если ты так считаешь
это они тут мальчиком взяли за правило - "к пуговицам претензии есть??", я не зря Райкина (будь он неладен) вспоминал :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799612
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТС писал на форуме о том, что знает SQL и ADO.NET, и в данный момент изучает именно специфику EF.

Ты мой пункт 1. вооооообще не понял. Доступ к данным обычно инкапсулируется в отдельный слой, там же живёт EF. Кто работает со слоем данных знать не знают никаких Include.


skyANAА что, в EF нет другого способа "жадной загрузки"? В статье только Include() упоминается.

Есть. Load. Тоже EF-specific, и ещё хуже чем Include. Позволяет работать с навигационными свойствами без модификатора virtual .
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799614
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ты вот теперь представляешь почему у ЕФ такие проблемы? (хотя бы то что низзя инклюд вывести за скобки)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799615
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

"жадная" в математике определено, потому скорее это "полная"
воще то я считаю что ОРМ только и нужен для того что бы одним махом загрузить объект или его проекции
при этом хорошо бы иметь и лейзи

получается что в ЕФ нет ни того, ни другого :(

Всё встаёт на свои места, когда понимаешь, что навигационные свойства ≠ вложенные объекты. Странно, почему этот факт многие игнорируют?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799616
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAМне было не понятно то, почему ТСу, кто хочет "жадно" загрузить объект, предлагаются какие-то проекции. Я это озвучил.

Что тебя тут смущает?

Ты глубже посмотреть не пробовал? Предлагаются не «какие-то проекции», а более эффективный способ работать с данными.

Нужно же понимать, что пример с Cart.Person очень ограниченный, в реале объекты гораздо больше и схема сложнее. Поэтому Include и «жадные» загрузки неизбежно приведут к проблемам. Я человека пытаюсь оградить от этого, а ты непонятно чего хочешь. Типа говорят человеку, что для постройки дома нужны чертежи, ты же опираясь на пример с будкой, впариваешь, что чертежи ненужны, сойдёт и так.В реальности бывают и простые объекты и сложные.

Вот нужно будет тебе 100 карточек через Web API отдать наружу, ты получается 200 запросов к БД вместо 100 будешь посылать даже если чётко представляешь, что "жадная загрузка" не представляет из себя избыточный SELECT?

Ну и опять какие-то левые слова пошли :) Что такое чертежи?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799617
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

ты вот теперь представляешь почему у ЕФ такие проблемы? (хотя бы то что низзя инклюд вывести за скобки)

Я не вижу никаких проблем.

Include нельзя вынести за скобки, потому что БД может быть спроектирована таким образом, что вытащишь один объект, а он через связи потянет за собой половину или почти всю базу данных. Include это костыль, призванный удовлетворить тех упёртых ребят, которые никак не хотят видеть разницу между навигационными свойствами и вложенными объектами.

Работать с «целым» объектом -- кажется вот как видится ORM, но это совсем не так.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799619
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНе согласен. Для задачи ТС Include() прекрасно подходит.

Для какой задачи? Ты УВЕРЕН что знаешь задачу ТС? Он привёл один маленький примерчик. Думаешь это и есть задача? Ахааххаах... это... довольно мило, если ты так считаешь Уверен, так что завязывай троллить, глупо.
ТС чёрными русскими буквами писал, что рабочий проект сдан давно, он чисто для себя балуется с EF: 16746956 .

Видимо из-за этого кстати и вопросы дополнительные не задаёт, занялся чем другим по работе.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799624
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВот нужно будет тебе 100 карточек через Web API отдать наружу, ты получается 200 запросов к БД вместо 100 будешь посылать даже если чётко представляешь, что "жадная загрузка" не представляет из себя избыточный SELECT?

Почему? Зная, что Person внутри Cart, это навигационное свойство , а не вложенный объект ? Ты пытаешься это знание скрыть. А если таких свойств 20? А у них еще по 10? Покажи-ка мне какая получится инструкция с Include().Include().Include().Include().Include().Include() ?


skyANAНу и опять какие-то левые слова пошли :) Что такое чертежи?

У тебя банальные проблемы с метафорами. Макконнелла почитай.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799626
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа в твоем монго (с твоих слов и по твоему прмеру) нет никакого графа объектов, а есть вложенная разметкаА MongoDB то тут при чём? JSON строка - это просто строка, однако её можно преобразовать к графу объектов.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799627
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУверен, так что завязывай троллить, глупо.
ТС чёрными русскими буквами писал, что рабочий проект сдан давно, он чисто для себя балуется с EF: 16746956 .

Видимо из-за этого кстати и вопросы дополнительные не задаёт, занялся чем другим по работе.

Дурака-то не включай. Если он балуется, чтобы затем бросить, значит вообще плевать что ему тут советуют. Если он сейчас балуется, чтобы затем применять по назначению, значит надо сразу закладывать правильный фундамент. Include -- зло, и не должно применяться на практике. Почему, я уже объяснил.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799628
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

часто "целые" объекты нужны, особенно если есть ограничения, которые невозможно описать контсрейнтами СКЛ в СУБД
потому и инклюд и лейзи должны быть вынесены за скобки и быть обусловленными от OCL модели
просто у ЕФ нет модели, потому и такие ляпы (ЕФ просто не знает где закончится граф, потому не может оценить реультат и включить лейзи автоматом, да и контрейнты он не анализирует нифига)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799629
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

а монго преобразовывает?
вот мамс преобразовывала в 80 году
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799631
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

часто "целые" объекты нужны, особенно если есть ограничения, которые невозможно описать контсрейнтами СКЛ в СУБД
потому и инклюд и лейзи должны быть вынесены за скобки и быть обусловленными от OCL модели
просто у ЕФ нет модели, потому и такие ляпы (ЕФ просто не знает где закончится граф, потому не может оценить реультат и включить лейзи автоматом, да и контрейнты он не анализирует нифига)

Я не думаю, что ЕФ задумывался настолько топ-левел. Это прослойка между реляционной БД и кодом. Не более того. Вроде как планируется туда включить ещё и NoSQL. Хз конечно, что получится.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799632
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ок
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799636
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosskyANA,

"жадная" в математике определено, потому скорее это "полная"
воще то я считаю что ОРМ только и нужен для того что бы одним махом загрузить объект или его проекции
при этом хорошо бы иметь и лейзи

получается что в ЕФ нет ни того, ни другого :(

Всё встаёт на свои места, когда понимаешь, что навигационные свойства ≠ вложенные объекты. Странно, почему этот факт многие игнорируют?Потому как не все при проектировании доменной модели пользуются терминологией EF :)

Если я запрашиваю данные туриста у сервиса поставщика, то ожидаю увидеть заполненными все свойства, а не предложение дёрнуть ещё пару методов сервиса, так как ну это же на самом деле навигационные свойства, у нас в базе они по разным таблицам раскиданы.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799638
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

значит надо договориться с сервисом
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799639
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВот нужно будет тебе 100 карточек через Web API отдать наружу, ты получается 200 запросов к БД вместо 100 будешь посылать даже если чётко представляешь, что "жадная загрузка" не представляет из себя избыточный SELECT?

Почему? Зная, что Person внутри Cart, это навигационное свойство , а не вложенный объект ? Ты пытаешься это знание скрыть. А если таких свойств 20? А у них еще по 10? Покажи-ка мне какая получится инструкция с Include().Include().Include().Include().Include().Include() ?Давай остановимся на случае, когда свойство одно. Совершенно не редкий случай.

hVosttskyANAНу и опять какие-то левые слова пошли :) Что такое чертежи?

У тебя банальные проблемы с метафорами. Макконнелла почитай. А, вот оно что. Ты считаешь что классно и понятно объясняешь всё метафорически. Заблуждаешься :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799640
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПотому как не все при проектировании доменной модели пользуются терминологией EF :)

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

Да что ты говоришь?

Какой наивно-оптимистичный подход! Я бы даже сказал, достойный прыщавого юнца.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public class Item 
{
   public long Id {get;set;}
   public string Name {get;set;}
   public virtual Catalog Catalog {get;set;}
}

public class Catalog
{
   public long Id {get;set;}
   public string Name {get;set;}
   public virtual ICollection<Item> Items {get;set;}
   public virtual Store {get;set;}
}

public class Store
{
   public long Id {get;set;}
   public string Name{get;set;}
   public virtual ICollection<Catalog> Catalogs {get;set;}
}



Т.е. дёрнув из базы всего один единственный Item, мы получим целую свалку данных, путешествуя по графу, от Catalog до Store, затем получая попутно все Catalogs и в каждом из них Items

Хороший же запрос получится, что сказать
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799641
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

значит надо договориться с сервисомО чём? С сервисами всё нормально, они там где надо "жадно" отдают. Там где не надо, предлагает воспользоваться соответсвующими методами.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799642
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА, вот оно что. Ты считаешь что классно и понятно объясняешь всё метафорически. Заблуждаешься :)

Просто ты не понимаешь метафор, это я уже уяснил.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799644
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAО чём? С сервисами всё нормально, они там где надо "жадно" отдают. Там где не надо, предлагает воспользоваться соответсвующими методами.

Что это значит «там где надо»? Т.е. всё-таки договориться? Ахахах... Удивляешь всё больше и больше.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799645
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAПотому как не все при проектировании доменной модели пользуются терминологией EF :)

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

Да что ты говоришь?

Какой наивно-оптимистичный подход! Я бы даже сказал, достойный прыщавого юнца.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public class Item 
{
   public long Id {get;set;}
   public string Name {get;set;}
   public virtual Catalog Catalog {get;set;}
}

public class Catalog
{
   public long Id {get;set;}
   public string Name {get;set;}
   public virtual ICollection<Item> Items {get;set;}
   public virtual Store {get;set;}
}

public class Store
{
   public long Id {get;set;}
   public string Name{get;set;}
   public virtual ICollection<Catalog> Catalogs {get;set;}
}



Т.е. дёрнув из базы всего один единственный Item, мы получим целую свалку данных, путешествуя по графу, от Catalog до Store, затем получая попутно все Catalogs и в каждом из них Items

Хороший же запрос получится, что сказать Ну вот опять глупый троллинг.
Я же писал, что нужно понимать, где можно и нужно "жадно", а где "лениво": 16817259 .

Зачем ты выдумываешь то, чего я бы не сделал?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799646
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRosskyANA,

значит надо договориться с сервисомО чём?
о схемах :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799647
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANAпропущено...
О чём?
о схемах :)Ну обычно в документации пишут, где "жадно", а где надо отдельно допрашивать данные :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799648
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

без обид
такое впечатление, что ты что то вызубрил и точно знаешь, но не мыслишь
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799649
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу вот опять глупый троллинг.
Я же писал, что нужно понимать, где можно и нужно "жадно", а где "лениво": 16817259 .

Зачем ты выдумываешь то, чего я бы не сделал?

И как это понимать, указывать Include? Вот у сервиса требуют объект Cart, откуда сервис знает, включать ли туда Person и чего-то ещё, или нет? Понимаешь, что этот бардак будет только разрастаться.

Предлагаешь делать так:

GetCartWithPerson(id)
GetCartWithPersonAndContacts(id)
GetCartWithContactsOnly(id)

?

Или построить для этих целей «красивый» Object Query?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799650
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу обычно в документации пишут, где "жадно", а где надо отдельно допрашивать данные :)

Есть же любители намерянно всё усложнять и делать через зад. Выбирают себе зачем-то профессию разработки ПО вместо проктолога.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799652
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

в ВИПРОС пишем
LoadAndFillMacroType("Контракт");

(
public void LoadAndFillMacroType(string macrotypename, Guid contextid, bool viewmode = false)
public void LoadAndFillMacroType(string macrotypename, bool viewmode = false)
)
А Контракт громадный граф
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799654
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAО чём? С сервисами всё нормально, они там где надо "жадно" отдают. Там где не надо, предлагает воспользоваться соответсвующими методами.

Что это значит «там где надо»? Т.е. всё-таки договориться? Ахахах... Удивляешь всё больше и больше.Ну что тебе не понятно?

Например Джошуа Кириевски предпочитает изначально загружать всё eager, а потом по мере необходимости добавлять в нужных местах lazy.

Или другой пример.

Отдаём мобильному приложению список счетов пользователя вместе с валютой каждого счёта, хоть валюты и лежат в отдельной таблице-справочнике.
А вот операции по счёту естесвенно отдаём отдельным запросом с параметрами (id счёта, период выписки), а не посылаем вместе со счётом все 100500 и фильтруйте там как хотите.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799655
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

без обид
такое впечатление, что ты что то вызубрил и точно знаешь, но не мыслишьобъясни
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799656
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ну местами ты очень толково и по делу (это когда ты точно знаешь о чем речь), а иногда (как сейчас) такое впечатление, что ты не можешь разрешить некоторые неопределенности, додумывать, процемировать, найти аналогию и т.д.
это все без обид, пожалуйста
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799657
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Джошу Кириевский - тупой баран, если он чего то там "предпочитает"
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799658
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предпочитают худых полным и т.д., а задачи решают рационально
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799659
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНу вот опять глупый троллинг.
Я же писал, что нужно понимать, где можно и нужно "жадно", а где "лениво": 16817259 .

Зачем ты выдумываешь то, чего я бы не сделал?

И как это понимать, указывать Include? Вот у сервиса требуют объект Cart, откуда сервис знает, включать ли туда Person и чего-то ещё, или нет? Понимаешь, что этот бардак будет только разрастаться.

Предлагаешь делать так:

GetCartWithPerson(id)
GetCartWithPersonAndContacts(id)
GetCartWithContactsOnly(id)

?

Или построить для этих целей «красивый» Object Query? Ну первый вариант - говно. А если "Object Query", то о каком сервисе речь? OData, SOAP?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799660
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНу обычно в документации пишут, где "жадно", а где надо отдельно допрашивать данные :)

Есть же любители намерянно всё усложнять и делать через зад. Выбирают себе зачем-то профессию разработки ПО вместо проктолога. А толком объяснить можешь, что не так? Или это такая удобаная позиция: сказать "ваша музыка говно, потому что она говно", и если кто-то ничего не понял, то у него банальные проблемы с метафорами?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799662
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosв ВИПРОС пишем
LoadAndFillMacroType("Контракт");

(
public void LoadAndFillMacroType(string macrotypename, Guid contextid, bool viewmode = false)
public void LoadAndFillMacroType(string macrotypename, bool viewmode = false)
)
А Контракт громадный граф

Используем строго типизированные проекции. Никогда не надо догадываться, делать предопложения, шнырять по документации, чтобы понять что же у объекта внутри, а что надо дозагружать. Берём нужную проекцию, в ней определённо точно всё загруженно, без всяких домыслов. Работать с проекцией крайне просто, работает в 2 стороны с прозрачным маппингом, в том числе фильтры на проекции, проецируются на объекты. Поэтому не вижу никаких проблем, и зависимости от EF. Был опыт «переезда» с EF на NHibernate и наоборот, при чём слой бизнес-логики оказывался нетронут. Я считаю это профит, хотя может глубоко заблуждаюсь.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799664
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

ну местами ты очень толково и по делу (это когда ты точно знаешь о чем речь), а иногда (как сейчас) такое впечатление, что ты не можешь разрешить некоторые неопределенности, додумывать, процемировать, найти аналогию и т.д.
это все без обид, пожалуйстакак сейчас - это о чём конкретно? может просто я не понятно выражаюсь?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799665
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА толком объяснить можешь, что не так? Или это такая удобаная позиция: сказать "ваша музыка говно, потому что она говно", и если кто-то ничего не понял, то у него банальные проблемы с метафорами?

Что не так, говоришь? Ты же сам сказал, что не понял метафоры, только изъяснился таким образом, что это типа метафоры такие плохие. Это похоже на еврейский способ попросить об одолжении в форме шантажа. Упс. Забыл, ты же не понимаешь метафоры, прости-прости
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799666
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosпредпочитают худых полным и т.д., а задачи решают рациональнои что же иррационального в том, чтобы сначала сделать полную загрузку, а потом там где надо ленивую?

мне иногда кажется, что ты на всё смотришь, через призму ВИПРОСА своего. сразу себе рисуешь громадный граф.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799668
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAА толком объяснить можешь, что не так? Или это такая удобаная позиция: сказать "ваша музыка говно, потому что она говно", и если кто-то ничего не понял, то у него банальные проблемы с метафорами?

Что не так, говоришь? Ты же сам сказал, что не понял метафоры, только изъяснился таким образом, что это типа метафоры такие плохие. Это похоже на еврейский способ попросить об одолжении в форме шантажа. Упс. Забыл, ты же не понимаешь метафоры, прости-прости Ты ушёл от вопроса.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799669
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу первый вариант - говно. А если "Object Query", то о каком сервисе речь? OData, SOAP?

давай: и то и другое, а ещё и кастомный REST и MVC?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799670
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

"как сейчас" - имелось ввиду "дискуссия наша за день в двух топиках" :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799672
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRosпредпочитают худых полным и т.д., а задачи решают рациональнои что же иррационального в том, чтобы сначала сделать полную загрузку, а потом там где надо ленивую?

мне иногда кажется, что ты на всё смотришь, через призму ВИПРОСА своего. сразу себе рисуешь громадный граф.
да нет
я же тебе сказал что у меня мало комплексов
ну просто полная загрузка допусти "Расписания работ завода за неделю" просто ни в какие ворота не влезет
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799673
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу что тебе не понятно?

Например Джошуа Кириевски предпочитает изначально загружать всё eager, а потом по мере необходимости добавлять в нужных местах lazy.

Или другой пример.

Отдаём мобильному приложению список счетов пользователя вместе с валютой каждого счёта, хоть валюты и лежат в отдельной таблице-справочнике.
А вот операции по счёту естесвенно отдаём отдельным запросом с параметрами (id счёта, период выписки), а не посылаем вместе со счётом все 100500 и фильтруйте там как хотите.

Для списка счётов одна проекция, для операции по счёту другая. И не надо тут вкорячивать предположения, для подтверждения которых надо лезть в доку. Всё, что есть в проекции -- будет загружено. Зачем тебе эта задница из условий если/если/если...?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799674
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

"как сейчас" - имелось ввиду "дискуссия наша за день в двух топиках" :)Ты можешь указать, где конкретно у меня неопределённости? Мне полезно это знать. Или это очередной способ поддеть?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799676
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНапример Джошуа Кириевски предпочитает изначально загружать всё eager, а потом по мере необходимости добавлять в нужных местах lazy.

Женоподобный му**к. Если сегодня полная луна, буду грузить lazy, а если по радио будут крутить Елвиса, то всё eager
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799677
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

* это к Джошуа Кириевски
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799679
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

не у тебя "неопределенность", а у других (так как нельзя очень точно описать проблему или высказаться по поводу общепринятых вещей на форуме)
другие как то быстро ловят контекст и дополняют из своего опыта (вот как с хвостом мы сейчас говорили о пробемах еф (возможно мнимых)), он ни разу не спрросил меня - что такое "вывести лейзи за скобки", подозреваю - ты бы спросил
это обычно зависит от -
национальность (ментальность)
опыт
способность обобщать и классифифцировать ( у нас это называется ООП)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799680
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНу что тебе не понятно?

Например Джошуа Кириевски предпочитает изначально загружать всё eager, а потом по мере необходимости добавлять в нужных местах lazy.

Или другой пример.

Отдаём мобильному приложению список счетов пользователя вместе с валютой каждого счёта, хоть валюты и лежат в отдельной таблице-справочнике.
А вот операции по счёту естесвенно отдаём отдельным запросом с параметрами (id счёта, период выписки), а не посылаем вместе со счётом все 100500 и фильтруйте там как хотите.

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

Допустим с сервисом не только мобильное приложение работает, но и 1С интегрируется, будешь как выше предложил по три метода писать с разными проекциями?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799681
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

не у тебя "неопределенность", а у других (так как нельзя очень точно описать проблему или высказаться по поводу общепринятых вещей на форуме)
другие как то быстро ловят контекст и дополняют из своего опыта (вот как с хвостом мы сейчас говорили о пробемах еф (возможно мнимых)), он ни разу не спрросил меня - что такое "вывести лейзи за скобки", подозреваю - ты бы спросил
это обычно зависит от -
национальность (ментальность)
опыт
способность обобщать и классифифцировать ( у нас это называется ООП)Расстрою тебя, я тоже понял, что такое "вывести лейзи за скобки". Я не только с MongoDB работаю, и реляционными СУБД тоже, и лейзи использую. Где-то даже сам его и написал.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799682
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ну я ж не сказал что совсем безнадежен (а то бы воще не разговаривал), может я и ошибаюсь, иногда даже настроение мешает понять другого
ладно, проехали
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799684
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

ну я ж не сказал что совсем безнадежен (а то бы воще не разговаривал), может я и ошибаюсь, иногда даже настроение мешает понять другого
ладно, проехалиУ вас с Хвостом походу одна национальность. Вы оба ни фига конкретно сказать не можете с первого раза.
Метафоры да намёки вокруг да около :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799685
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВ чём конкретно задница?

Допустим с сервисом не только мобильное приложение работает, но и 1С интегрируется, будешь как выше предложил по три метода писать с разными проекциями?

Я буду писать разные проекции под разные нужды. Строгая типизированность, абсолютно полная определённость -- не надо ни с кем «договариваться» и описывать в документации на тему что же всё таки будет загружено и когда. Все проекции прекрасно работают поддерживают все IQueryable возможности, значит фильтры и сортировки также прекрасно проецируются. И это будет не 3 метода, а 3 проекции. Метод останется как раз один.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799686
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И оба выдумываете за человека то, что ему самому и в голову бы никогда не пришло. Видимо это следствие вашей предвзятости.

P.S.: понимаю теперь МСУ.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799687
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМетафоры да намёки вокруг да около :)

Почитай ты уже Макконнелла «Совершенный код», треть книги посвящена важности метафор для разработки ПО. Конечно, бывают неудачные метафоры, и ни одна метафора не может описывать ситуацию полностью. Но у тебя с ними проблемы, на сколько я понимаю.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799688
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВ чём конкретно задница?

Допустим с сервисом не только мобильное приложение работает, но и 1С интегрируется, будешь как выше предложил по три метода писать с разными проекциями?

Я буду писать разные проекции под разные нужды. Строгая типизированность, абсолютно полная определённость -- не надо ни с кем «договариваться» и описывать в документации на тему что же всё таки будет загружено и когда. Все проекции прекрасно работают поддерживают все IQueryable возможности, значит фильтры и сортировки также прекрасно проецируются. И это будет не 3 метода, а 3 проекции. Метод останется как раз один.Ты хотя бы один Public API уже реализовал?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799689
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ оба выдумываете за человека то, что ему самому и в голову бы никогда не пришло. Видимо это следствие вашей предвзятости.

P.S.: понимаю теперь МСУ.

Ого. Да ты подслил малёха?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799690
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТы хотя бы один Public API уже реализовал?

Естественно
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799691
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAМетафоры да намёки вокруг да около :)

Почитай ты уже Макконнелла «Совершенный код», треть книги посвящена важности метафор для разработки ПО. Конечно, бывают неудачные метафоры, и ни одна метафора не может описывать ситуацию полностью. Но у тебя с ними проблемы, на сколько я понимаю. Ну допустим. Но проблемы тут нет. Когда мне что-то не понятно, я уточняю.

А вот когда человек, видя, что оппонент не понял, уточняет, продолжает изъясняться намёками да метафорами, при этом ещё и троллит, то это проблема.

Думаю Макконнелл не в таком ключе предлагает метафоры пользовать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799692
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAИ оба выдумываете за человека то, что ему самому и в голову бы никогда не пришло. Видимо это следствие вашей предвзятости.

P.S.: понимаю теперь МСУ.

Ого. Да ты подслил малёха? Пффф... Бугага, трололо, гыгыгы, подслил, подслил... Побольше смайликов

Не подслил, но от твоей манеры общения устал немного.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799694
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAТы хотя бы один Public API уже реализовал?

Естественно Дай ссылку? Что там, OData?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799697
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ответь на такой вопрос: Public API он предназначен для широкого круга партнёров, клиентов. Кто-то хочет интегрироваться, кто-то отчётики какие-то свои строить, кто приложение мобильное прикрутить, кто виджетов на сайт себе наклепать, или на рабочий стол.

Ты пишешь: "Я буду писать разные проекции под разные нужды". Как это выглядит, как ты заранее можешь угадать нужды?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799698
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только не надо отвечать, что OData, гыгыгы, там есть $select. :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799703
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ ответь на такой вопрос: Public API он предназначен для широкого круга партнёров, клиентов. Кто-то хочет интегрироваться, кто-то отчётики какие-то свои строить, кто приложение мобильное прикрутить, кто виджетов на сайт себе наклепать, или на рабочий стол.

Ты пишешь: "Я буду писать разные проекции под разные нужды". Как это выглядит, как ты заранее можешь угадать нужды?

Ты сейчас о чём вообще, я не понял? Почему я должен что-то там «угадывать»? Это что за подход такой к разработке?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799704
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе подслил, но от твоей манеры общения устал немного.

Трудности с перевариванием метафор? Понимаю
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799749
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAИ ответь на такой вопрос: Public API он предназначен для широкого круга партнёров, клиентов. Кто-то хочет интегрироваться, кто-то отчётики какие-то свои строить, кто приложение мобильное прикрутить, кто виджетов на сайт себе наклепать, или на рабочий стол.

Ты пишешь: "Я буду писать разные проекции под разные нужды". Как это выглядит, как ты заранее можешь угадать нужды?

Ты сейчас о чём вообще, я не понял? Почему я должен что-то там «угадывать»? Это что за подход такой к разработке?О Public API. Видимо мы по разному понимаем, что это такое. Что он у вас из себя представляет и для каких целей реализован?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799819
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAО Public API. Видимо мы по разному понимаем, что это такое. Что он у вас из себя представляет и для каких целей реализован?

У кого это «у нас»??? У нас нет своего личного проекта, который мы пицот тыщ лет пилим! И не будет никогда. Что ж ты на всё через призму исключительно своей компании смотришь? Когда заказчику требуется PAPI, мы его делаем. Сразу всё чётко оговаривается, для каких целей он нужен, какие задачи будет решать, и как их решать. Это ты там экстрасенсом подрабатываешь и пытаешься что-то «угадывать».

Из проектов, рассчитанных на широкую аудиторию, есть http://joxi.ru -- наша разработка, но PAPI там пока не планируется. Закажут? Будем делать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799840
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAО Public API. Видимо мы по разному понимаем, что это такое. Что он у вас из себя представляет и для каких целей реализован?

У кого это «у нас»??? У нас нет своего личного проекта, который мы пицот тыщ лет пилим! И не будет никогда. Что ж ты на всё через призму исключительно своей компании смотришь? Когда заказчику требуется PAPI, мы его делаем. Сразу всё чётко оговаривается, для каких целей он нужен, какие задачи будет решать, и как их решать. Это ты там экстрасенсом подрабатываешь и пытаешься что-то «угадывать».

Из проектов, рассчитанных на широкую аудиторию, есть http://joxi.ru -- наша разработка, но PAPI там пока не планируется. Закажут? Будем делать.Я смотрю не через призму исключительно своей компании. Я смотрю через призму публичных сервисов, которых в интернете полно.
У нас только десяток прямых конкурентов.
А за рамками нашей ниши тьма сервисов: игровые, поисковые, онлайн бронирования, биржевые и т.д., и т.п.

Ты же не будешь отрицать, что Wild Apricot - это не единственное в мире SaaS решение. А термин Public API не мы придумали.

И, кстати, ничего мы не угадываем. Пользователи пишут свои пожелания, мы их собираем, анализируем и реализуем требуемый функционал.
Просто когда у тебя 15000 активных клиентов разной величины (у одной ассоциации 8 контактов, а у другой 8000), то требования к Public API получаются совершенно разнообразные.

Кому-то свои 8 контактов хочется показать в виде красивого виджета на сайте: смотрите какие классные у нас перцы. Фотка, имя, должность, некий текстовый description (всего-то ничего полей).
А кому-то свою аналитику хочется прикрутить, где чуть-ли не все поля задействовать.

И похожая ситуация наверняка и в других публичных сервисах по всему миру.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799863
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ смотрю не через призму исключительно своей компании. Я смотрю через призму публичных сервисов, которых в интернете полно.
У нас только десяток прямых конкурентов.
А за рамками нашей ниши тьма сервисов: игровые, поисковые, онлайн бронирования, биржевые и т.д., и т.п.

Ты же не будешь отрицать, что Wild Apricot - это не единственное в мире SaaS решение. А термин Public API не мы придумали.

У вас один единственный продукт. Один! Будут ли пользователи платить за него -- это вопрос выживания вашей компании. Соответственно, вы находитесь перманентно в состоянии бесконечной разработки. У вас не существует конечного релиза. Или вы сделаете настолько идеальный и дешёвый сервис, чтобы ни один конкурент в ближайшие десятилетия вас не переплюнул. Тогда вы всей командой разработки дружно отправитесь на пенсию, ибо ваши услуги будут более не нужны. Но такого, конечно, не случится.

У нас продуктов выпускается много. Совершенно разных. И больших, и маленьких. Мы не делаем SaaS, ибо такие вещи обычно разрабатываются внутри компании-владельца, а не на аутсорсе. Но если мы получим такой проект, будем делать. Надо будет развивать PAPI, будем развивать.

skyANAИ, кстати, ничего мы не угадываем. Пользователи пишут свои пожелания, мы их собираем, анализируем и реализуем требуемый функционал.
Просто когда у тебя 15000 активных клиентов разной величины (у одной ассоциации 8 контактов, а у другой 8000), то требования к Public API получаются совершенно разнообразные.

Тоже самое:

http://joxi.userecho.com/topic/528696-byilo-byi-zdorovo-poluchit-dostup-k-api/

Только с небольшим отличием. Это пользователи заказчика , а не наши. И как видишь, заказчик пока не планирует тратить средства на разработку PAPI.

skyANAКому-то свои 8 контактов хочется показать в виде красивого виджета на сайте: смотрите какие классные у нас перцы. Фотка, имя, должность, некий текстовый description (всего-то ничего полей).
А кому-то свою аналитику хочется прикрутить, где чуть-ли не все поля задействовать.

И похожая ситуация наверняка и в других публичных сервисах по всему миру.

Да это всё понятно. Но погляди на PAPI фконтакта или фейспука. Сложные? Отнюдь, простейшие как бревно. Однако удовлетворяют миллионы пользователей. Так что не надо чесать про то, как же тяжело PAPI разрабатывать, типа это магия доступная лишь горстке избранных на всей земле.

Поступают требования, мы выполняем. Я просто не понимаю, ты у себя в компании и жрец, и жнец и на дуде игрец? Чем вообще ты занимаешься? Ты реализуешь PAPI или проектируешь его? Или полностью на фидбеке с пользователями и группой стратегического планирования? И ещё гоняешь на хайлоад и оптимизируешь сервера, собираешь аналитегу, и пилишь Object Query... Не слишком ли?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799871
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, ты делаешь не верные выводы, не по теме вопроса.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799874
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, ты делаешь не верные выводы, не по теме вопроса.

Возможно.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799887
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С телефона писал, был краток :)

hVosttне надо чесать про то, как же тяжело PAPI разрабатывать, типа это магия доступная лишь горстке избранных на всей земле.Вот это твои фантазии не понятно на какой почве. Я ничего такого не "чесал" :)

hVosttЯ просто не понимаю, ты у себя в компании и жрец, и жнец и на дуде игрец? Чем вообще ты занимаешься? Ты реализуешь PAPI или проектируешь его? Или полностью на фидбеке с пользователями и группой стратегического планирования? И ещё гоняешь на хайлоад и оптимизируешь сервера, собираешь аналитегу, и пилишь Object Query... Не слишком ли?В данный момент я разрабатываю архитектуру нового прайсинга для Абрикоса (проект: "Launch new pricing").

Public API у нас до недавнего времени писал ровно один разработчик. Я проводил Code Review.

"пилишь Object Query" - это относится к личным проектам, что я веду в свободное от Абрикоса время.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799900
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВот это твои фантазии не понятно на какой почве. Я ничего такого не "чесал" :)

А, ну ошибся значит


skyANAВ данный момент я разрабатываю архитектуру нового прайсинга для Абрикоса (проект: "Launch new pricing").

Public API у нас до недавнего времени писал ровно один разработчик. Я проводил Code Review.

"пилишь Object Query" - это относится к личным проектам, что я веду в свободное от Абрикоса время.

Ну дак PAPI у вас решает определённый круг задач всё же. Может большой, но определённый. Мне же представилось, что ты говоришь про некий волшебный резиновый PAPI, который подойдёт абсолютно УСЕМ. Как у Б. Гейтса, волшебные 640 кб

Всё равно есть определённые сценарии и цели, из которых необходимо исходить. А то прибегает менеджер с глазами в два блюдца и орёт, что вы всё напортачили, всё надо срочно переписать, так как с холодильника и кофемолки пользоваться вашим творением абсолютно невозможно!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799907
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу дак PAPI у вас решает определённый круг задач всё же. Может большой, но определённый. Мне же представилось, что ты говоришь про некий волшебный резиновый PAPI, который подойдёт абсолютно УСЕМ. Как у Б. Гейтса, волшебные 640 кб

Всё равно есть определённые сценарии и цели, из которых необходимо исходить. А то прибегает менеджер с глазами в два блюдца и орёт, что вы всё напортачили, всё надо срочно переписать, так как с холодильника и кофемолки пользоваться вашим творением абсолютно невозможно! Ну да, сценарии использования одного и того же метода API разные, но число их конечное.

Я просто хотел уточнить тот момент, что какие тут могут быть проекции? Ты просто преподносишь их как некий универсальный механизм.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799914
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

проекция и есть универсальный механизм - еще называется "специализация"
смотри сколько проекций у одного базового понятия
чем это хорошо? аналитик строит модель, а прогер нафиг не нужен
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799941
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, ты хотел сказать спецификация?

$filter != $select :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799942
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
criteria != projection
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799949
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, фишка в том, что hVostt-то как раз решил "писать разные проекции под разные нужды" ( 16817619 ).

То есть обсудить с заказчиком конкретное число сценариев и под них реализовать конкретное число проекций.
Тогда как Випрос и Абрикос позволяют пользователю, в лице аналитика или клиента, самому задать требуемые условия (спецификацию) и состав возвращаемых данных (проекцию).
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799951
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAсостав структуру возвращаемых данных (проекцию).поправил
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799974
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ну не в словах дело
просто есть принятые слова - обобщение, специализация, морфизмы и эти слова относятся не только к поведению, но структуре
в ВИПРОС что то наподобие структурного ООП
методы олучения специализации могут быть разными, могу наложиться структурные фильтры, фильтры на значения, фильтры на методы и события, на визуализацию и т.д., + добавление структурные, поведенческие (это как в прототипировании)
назови как хошь
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799976
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто не надо для всего этого писать код (кроме собственного поведения) - вот в чем отличие ВИПРОС от других
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799985
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, ну классно. А что в ВИПРОСе выбрано в качестве ключа шардинга? Какая функция, правило определяет соответсвие сервера ключу?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799997
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯ просто хотел уточнить тот момент, что какие тут могут быть проекции? Ты просто преподносишь их как некий универсальный механизм.

Именно, я преподношу их как универсальный механизм -- для чего? Отвечаю -- для выбора нужного среза данных. Что такое проекция? Это POCO объект с нужным набором полей, может включать в себя поля из одной или нескольких ORM Entity, целые объекты, вычисляемые поля и аггрегации. Механизм универсален потому, что IQueryable запрос на проекцию прозрачно транслируется в IQueryable для ORM, значит с ними можно работать как с полноценными Entity. Проекции хороши тем, что полностью убирают любые вопросы с eager/lazy loading, так как берут одним запросом 100% по факту всё, что указано в проекции. И не надо ничего нигде описывать. Проекции хороши тем, что проекций может быть сколько угодно много, а метод для получения данных -- всего один для каждого корня. Проекции не зависят от реализации репозитория -- за бортом может быть что угодно: EF, NHibernate, или что-то ещё, если они реализуют честный IQueryable провайдер. Проекции замечательно работают с OData, и в принципе с чем угодно. Это не фанатение и не любовь, а банальная практичность.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800003
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЯ просто хотел уточнить тот момент, что какие тут могут быть проекции? Ты просто преподносишь их как некий универсальный механизм.

Именно, я преподношу их как универсальный механизм -- для чего? Отвечаю -- для выбора нужного среза данных. Что такое проекция? Это POCO объект с нужным набором полей, может включать в себя поля из одной или нескольких ORM Entity, целые объекты, вычисляемые поля и аггрегации. Механизм универсален потому, что IQueryable запрос на проекцию прозрачно транслируется в IQueryable для ORM, значит с ними можно работать как с полноценными Entity. Проекции хороши тем, что полностью убирают любые вопросы с eager/lazy loading, так как берут одним запросом 100% по факту всё, что указано в проекции. И не надо ничего нигде описывать. Проекции хороши тем, что проекций может быть сколько угодно много, а метод для получения данных -- всего один для каждого корня. Проекции не зависят от реализации репозитория -- за бортом может быть что угодно: EF, NHibernate, или что-то ещё, если они реализуют честный IQueryable провайдер. Проекции замечательно работают с OData, и в принципе с чем угодно. Это не фанатение и не любовь, а банальная практичность.Это всё понятно. На практике у тебя как это выглядит? Метод сервиса (контроллера) возвращает IQueryable? Или как?

Я так понял, ты пишешь пяток конкретных методов, которые принимают ограниченный набор параметров, ты их пихаешь в Where, в Select-е обозначаешь проекцию, соответсвующую логике того, что это за метод и вуаля.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800007
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, и тебе ведь не сложно будет показать код решения задачи ТС с проекциями?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800016
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЭто всё понятно. На практике у тебя как это выглядит? Метод сервиса (контроллера) возвращает IQueryable? Или как?

Я так понял, ты пишешь пяток конкретных методов, которые принимают ограниченный набор параметров, ты их пихаешь в Where, в Select-е обозначаешь проекцию, соответсвующую логике того, что это за метод и вуаля.

Очень грубый пример, метод интерфейса:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
/// детализация сделки
var dealDetails = Service.GetAll().Project().To<DealDetailsDto>();

/// список сделок для обзора
var dealObserves = Service.GetAll().Project().To<DealObserveDto>();

/// и т.д.
...



Конечно в реале это является частью механизма Object Query, туда же все параметры летят, и через интеленс получаем список доступных проекций.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800017
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAViPRos, ну классно. А что в ВИПРОСе выбрано в качестве ключа шардинга? Какая функция, правило определяет соответсвие сервера ключу?
нет у меня пока масштабируемости такой на уровне приложения
я воще то думал, что всякие датацентры сами умеют это без приложения
ну если не умеют, то придтся написать сервис сопоставления (а ключ у меня ГУИД)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800019
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как нить надо над этим поработать
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800023
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, и тебе ведь не сложно будет показать код решения задачи ТС с проекциями?

В самом простейшем случае:

Код: c#
1.
var query = db.Carts.Select(p => { Cart = p, Person = p.Person });



Нетипизированная проекция. Это суть. Что-то большее давать без определнённой задачи -- глупо. А «хочу чтобы в Cart сразу был Person», извини меня -- не является задачей. Хоть убей. Непонятно чего в итоге хочет ТС и зачем, а я экстрасенсом не собираюсь работать. Всякие советы типа «используй Include», кроме того, что они плохи, они не призваны помочь ТС, а даны чисто на от....ись.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800024
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ну это все надо кодировать
а в ВИПРОС - склонировал макротип, поменял пару полей, наложил какой нить фильтр и все
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800028
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAЭто всё понятно. На практике у тебя как это выглядит? Метод сервиса (контроллера) возвращает IQueryable? Или как?

Я так понял, ты пишешь пяток конкретных методов, которые принимают ограниченный набор параметров, ты их пихаешь в Where, в Select-е обозначаешь проекцию, соответсвующую логике того, что это за метод и вуаля.

Очень грубый пример, метод интерфейса :

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
/// детализация сделки
var dealDetails = Service.GetAll().Project().To<DealDetailsDto>();

/// список сделок для обзора
var dealObserves = Service.GetAll().Project().To<DealObserveDto>();

/// и т.д.
...

Не понял, что такое такое интерфейс в данном случае. Service - это класс бизнес-логики, или это gateway к сервису?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800032
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

ну это все надо кодировать
а в ВИПРОС - склонировал макротип, поменял пару полей, наложил какой нить фильтр и все

В любом случае надо кодировать. Чуть больше затрат на написание проекций, окупается затем тысячу раз сторицей. Макротипы со строковыми ключами? Увольте. Строгая типизированность и интеллисенс -- не собираюсь от этого отказываться

Тем более проекции, являясь по сути обычными классами, также могут наследоваться, и вообще они очень хорошо кастомизируются.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800034
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе понял, что такое такое интерфейс в данном случае. Service - это класс бизнес-логики, или это gateway к сервису?

А чего ещё? Класс бизнес-логики в данном случае. Как видишь, никакой зависимости от EF. Сервис в свою очередь работает с репой, и тоже без всякой зависимости от EF.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800036
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

И ещё, ORM Entity также могут выступать в роли проекции, в отдельных случаях можно делать так:

Код: c#
1.
var items = ItemService.GetAll().Project().To<Item>(); // Item ==> Item



Получим Item со всеми потрохами (этакий bulk Include получается по сути)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800037
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, и тебе ведь не сложно будет показать код решения задачи ТС с проекциями?

В самом простейшем случае:

Код: c#
1.
var query = db.Carts.Select(p => { Cart = p, Person = p.Person });

И EF интерпертирует это выражение в JOIN двух таблиц?

Нетипизированная проекция. Это суть. Что-то большее давать без определнённой задачи -- глупо. А «хочу чтобы в Cart сразу был Person», извини меня -- не является задачей.Хм, ну а если нам надо получить Card для выполнения каких-либо действий над ней, для бизнес-логики? Не с анонимным же типом работать и не с типизированным DTO.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800038
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

я мог бы сгенерировать полный набор "классов"
но не увидел выгоду
сейчас какой нить прикладной выхлоп ВИПРОС расширяется и клиентом и поставщиком
ВИПРОС на автомате сливает изменения клиента и поставщика, при этом не надо ниче компилировать, переслать, установить и т.д.
а с кодом были бы проблемы
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800042
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе понял, что такое такое интерфейс в данном случае.

Service.GetAll()
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800043
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Код: c#
1.
var query = db.Carts.Select(p => { Cart = p, Person = p.Person });

И EF интерпертирует это выражение в JOIN двух таблиц?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800045
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

я мог бы сгенерировать полный набор "классов"
но не увидел выгоду
сейчас какой нить прикладной выхлоп ВИПРОС расширяется и клиентом и поставщиком
ВИПРОС на автомате сливает изменения клиента и поставщика, при этом не надо ниче компилировать, переслать, установить и т.д.
а с кодом были бы проблемы

Возможно. Но я ж всей ситуации не знаю.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800046
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt
Код: c#
1.
var query = db.Carts.Select(p => { Cart = p, Person = p.Person });


И EF интерпертирует это выражение в JOIN двух таблиц?

Да.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800048
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНе понял, что такое такое интерфейс в данном случае.

Service.GetAll()Service - это репозиторий?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800049
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAХм, ну а если нам надо получить Card для выполнения каких-либо действий над ней, для бизнес-логики? Не с анонимным же типом работать и не с типизированным DTO.

Есть два пути: проекции могут мапиться также и обратно в Entity. Или для изменяющих запросов, берутся Entity. Я предпочитаю для изменения работать исключительно с Entity, а проекции только для получения данных, для отображения или передачи наружу.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800052
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAService - это репозиторий?

Нет, я же сказал, это сервисный класс бизнес-логики. Т.е. GetAll() это всё, что доступно текущему пользователю, а не всё вообще. В логика маппинга для проекции также в зоне ответственности бизнес-логики. Просто я упрощаю примеры.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800061
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAХм, ну а если нам надо получить Card для выполнения каких-либо действий над ней, для бизнес-логики? Не с анонимным же типом работать и не с типизированным DTO.

Есть два пути: проекции могут мапиться также и обратно в Entity. Или для изменяющих запросов, берутся Entity. Я предпочитаю для изменения работать исключительно с Entity.Правильно-ли я понял, что для маппинга ты используешь AutoMapper?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800075
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПравильно-ли я понял, что для маппинга ты используешь AutoMapper?

Да, всё верно. До недавнего времени у проекций был существенный недостаток: в проекцию нельзя было передать параметры. Теперь всё в шоколаде, параметры можно передавать
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800365
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAПравильно-ли я понял, что для маппинга ты используешь AutoMapper?

Да, всё верно. До недавнего времени у проекций был существенный недостаток: в проекцию нельзя было передать параметры. Теперь всё в шоколаде, параметры можно передавать Ясно. .Project() и .To<>() - это методы расширения из библиотеки AutoMapper.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800378
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЯсно. .Project() и .To<>() - это методы расширения из библиотеки AutoMapper.

Точно.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800385
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, погоди, то есть если "для изменяющих запросов, берутся Entity", то получается мы не просто выбираем данные, но ещё и пропускаем их через AutoMapper?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800386
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И они маппятся сами на себя?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800612
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, погоди, то есть если "для изменяющих запросов, берутся Entity", то получается мы не просто выбираем данные, но ещё и пропускаем их через AutoMapper?

Нет, просто Entity берутся. Но можно изменять и проекции, они также мапятся в Entity обратно -- способ очень хорошо подходит для Angular-style разработки (но мне всё равно не нравится, теряется контроль).
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800619
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ они маппятся сами на себя?

Поясни плз, что ты имеешь сейчас в виду? Кто на кого мапится?

Есть ORM Entity (EDM), а есть проекции (DTO). Для изменения берём Entity, для отображения/передачи DTO. Но можно работать только с DTO, на этом можно полностью построить архитектуру (когда напрямую с Entity больше никто не работает).
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800653
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAИ они маппятся сами на себя?

Поясни плз, что ты имеешь сейчас в виду? Кто на кого мапится?

Есть ORM Entity (EDM), а есть проекции (DTO). Для изменения берём Entity, для отображения/передачи DTO. Но можно работать только с DTO, на этом можно полностью построить архитектуру (когда напрямую с Entity больше никто не работает).Код в случае с Entity как выглядит?
Так:
Код: c#
1.
GetAll().Project().To<Entity>()

?

То есть AutoMapper отслеживает, что маппить не надо?

А если есть полноценный DomainModel объект, не DTO, и не ORM Entity, то свой велосипед изобретать?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800725
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКод в случае с Entity как выглядит?
Так:
Код: c#
1.
GetAll().Project().To<Entity>()


?

Зачем???

Просто берём Entity, без всякого AutoMapper-а. Тем более проекция Entity -> Entity приведёт к bulk include всех навигационных параметров. Это практически никогда не нужно (лично я с такой необходимостью даже не сталкивался).

skyANAА если есть полноценный DomainModel объект, не DTO, и не ORM Entity, то свой велосипед изобретать?

Как раз таки нет. DomainModel «объект» это и не объект вовсе. Это может быть целое состояние, с разными данными. И совсем не обязательно оно должно быть полностью загружено со всем потрохами. В ином случая, я бы не добавлял такую сущность (если по-твоему это и правда именно объект), ибо лишнее. Как тама говорил Оккама?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800743
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAКод в случае с Entity как выглядит?
Так:
Код: c#
1.
GetAll().Project().To<Entity>()


?

Зачем???

Просто берём Entity, без всякого AutoMapper-а. Тем более проекция Entity -> Entity приведёт к bulk include всех навигационных параметров. Это практически никогда не нужно (лично я с такой необходимостью даже не сталкивался).И как код будет выглядеть у тебя в этом случае?

hVosttskyANAА если есть полноценный DomainModel объект, не DTO, и не ORM Entity, то свой велосипед изобретать?

Как раз таки нет. DomainModel «объект» это и не объект вовсе. Это может быть целое состояние, с разными данными. И совсем не обязательно оно должно быть полностью загружено со всем потрохами. В ином случая, я бы не добавлял такую сущность (если по-твоему это и правда именно объект), ибо лишнее. Как тама говорил Оккама? Ну что значит "не объект вовсе". В домене определён некий тип (класс), экземпляр этого класса - есть объект. Объект имеет состояние и поведение.

И это не по-моему, это ООП :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800818
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ как код будет выглядеть у тебя в этом случае?

Например, Get(id)


skyANAНу что значит "не объект вовсе". В домене определён некий тип (класс), экземпляр этого класса - есть объект. Объект имеет состояние и поведение.

И это не по-моему, это ООП :)

Ну ладно, есть у тебя некий объект, и как он у тебя хранится? По кускам вразброс по базе? И чем это не отражение? Или у него есть ещё какие-то поля/данные, не имеющие прямого отношения к данным в хранилище? Я предпочитаю мыслить в контексте задачи, а сейчас о чём ты говоришь, я не понимаю.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800840
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, ну мы же рассматриваем некий универсальный, по-твоему мнению, механизм. Вот и хочется понять степень его универсальности :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800841
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты же не будешь отрицать того, что в мире существует DDD.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800855
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, ну мы же рассматриваем некий универсальный, по-твоему мнению, механизм. Вот и хочется понять степень его универсальности :)

Ты механизм предложенный мною для извлечения данных зачем экстраполируешь на DDD? Так мы скоро до UX доберёмся, а затем до маркетинга, затем до теории большого взрыва.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800857
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИменно, я преподношу их как универсальный механизм -- для чего? Отвечаю -- для выбора нужного среза данных. Что такое проекция? Это POCO объект с нужным набором полей, может включать в себя поля из одной или нескольких ORM Entity, целые объекты
Эти проекции получается часть модели? Затем проекции мапятся во viewmodel?
hVosttвычисляемые поля и аггрегации.

Могут содержать логику?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800866
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонhVosttИменно, я преподношу их как универсальный механизм -- для чего? Отвечаю -- для выбора нужного среза данных. Что такое проекция? Это POCO объект с нужным набором полей, может включать в себя поля из одной или нескольких ORM Entity, целые объекты
Эти проекции получается часть модели? Затем проекции мапятся во viewmodel?
hVosttвычисляемые поля и аггрегации.

Могут содержать логику?

Зависит от задачи. Как я уже неоднократно говорил, мы изготавливаем ПО различного уровня сложности, для самых различных применений. У нас нет одной единственной серебяной пилюли, одного универсального решения для всех задач.

Делали CRM, у нас было несколько слоёв, с максимальным разделением ответственности. Делаем небольшую службу маленьким REST для периодического дёргания из вне -- зачем мы будем корячиться и убивать ресурсы на сложную ветвистую архитектуру?

По вопросам skyANA упорно складывается ощущение, что он думает мы один единственный проект уже 10 лет пилим, как у них. И поэтому взаимопонимания не случается. Это прискорбно.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800876
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПо вопросам skyANA упорно складывается ощущение, что он думает мы один единственный проект уже 10 лет пилим, как у них. И поэтому взаимопонимания не случается. Это прискорбно.Зря ты так думаешь.

Я не пилю Абрикос 10 лет, так как пришёл в компанию 10 января 2012 года. А общий стаж у меня 12 лет на разных проектах в разных предметных областях, начиная с должности стажёра в CBOSS в 2012-м.
Также в свободное время я пилю свои проекты, вообще не похожие на Абрикос.

А о вас я думаю, что вы попробовав разные варианты в разных проектах, пришли на данный момент типа к вот такому универсальному.
Пока оно тебе видится идеальным. Но вот наверняка есть вероятность того, что за год ты накопишь негативного опыта и перепишешь в какой-то другой вид.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800879
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонЭти проекции получается часть модели? Затем проекции мапятся во viewmodel?

И всё же отвечу. Проекции могут как мапиться во вьюмодель, так и сами выступать конечным контейнером для данных. В случае OData это именно так. Зависит от общей концепции архитектуры. Основной, принятый принцип должен соблюдаться повсеместно, это важно для сопровождения и развития продукта.

ПарамонМогут содержать логику?

Нет, не могут. Логику содержит сам механизм проекции -- это логика, но не объект, хранящий проекцию. Поэтому проекции не относятся к слою доступа к данным.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800882
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttУ нас нет одной единственной серебяной пилюли, одного универсального решения для всех задач.Хм. Вот теперь всё понятно. Пришли к очевидному выводу: разные задачи - разные реализации.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800883
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА о вас я думаю, что вы попробовав разные варианты в разных проектах, пришли на данный момент типа к вот такому универсальному.
Пока оно тебе видится идеальным. Но вот наверняка есть вероятность того, что за год ты накопишь негативного опыта и перепишешь в какой-то другой вид.

А я и не утверждал обратного Даже пол года назад я думал немного иначе.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800889
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttУ нас нет одной единственной серебяной пилюли, одного универсального решения для всех задач.Хм. Вот теперь всё понятно. Пришли к очевидному выводу: разные задачи - разные реализации.

Я уже столкнулся с кодом, написанным «под копирку» независимо от задачи. Хорошего мало. Единожды усвоенный урок некими специалистами потом использовался как единственно возможное решение. Кое что пришлось на корню переписывать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38800897
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...
Хм. Вот теперь всё понятно. Пришли к очевидному выводу: разные задачи - разные реализации.

Я уже столкнулся с кодом, написанным «под копирку» независимо от задачи. Хорошего мало. Единожды усвоенный урок некими специалистами потом использовался как единственно возможное решение. Кое что пришлось на корню переписывать.Вот странный ты человек. А чего ты тогда троллишь на тему всяких Query?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801349
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Походу, проекции это самый приемлемый подход для работы orm с реляционной базой.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801367
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонhVostt,

Походу, проекции это самый приемлемый подход для работы orm с реляционной базой.Может стоит попробовать другой ORM?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801395
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПарамонhVostt,

Походу, проекции это самый приемлемый подход для работы orm с реляционной базой.Может стоит попробовать другой ORM?
Проблема не велика, а в чем то может быть и польза.
Нет ничего идеального, а это уже в коробке, цветет и развивается :)
А какой предложить хотел и чем он лучше?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801468
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВот странный ты человек. А чего ты тогда троллишь на тему всяких Query?

Вот сейчас не понял.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801469
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМожет стоит попробовать другой ORM?

При чём тут вообще выбор ORM? Проекции за ORM-ом, а не способ работы с ним. В SQL, например, именно так и работают: пишут SELECT <набор нужных полей из одной или нескольких таблиц или подзапросов> -- скажешь «плохой SQL, может стоит попробовать другой язык запросов?»?

Странный ты человек однако. Что-то сказать видимо хочешь, а что хрен проссышь.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801487
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с трудом я это все перечитал...) Уже и боюсь что-то ещё спрашивать)
А по факту получилось куча методов
Код: c#
1.
2.
3.
4.
GetById(Id);
GetByName(name);
GetByNameAndId();
//...etc


Но из того что вы описывали в теме, как сделать по другому так и не понял)))
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801611
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAМожет стоит попробовать другой ORM?

При чём тут вообще выбор ORM? Проекции за ORM-ом, а не способ работы с ним. В SQL, например, именно так и работают: пишут SELECT <набор нужных полей из одной или нескольких таблиц или подзапросов> -- скажешь «плохой SQL, может стоит попробовать другой язык запросов?»?

Странный ты человек однако. Что-то сказать видимо хочешь, а что хрен проссышь.А может и скажу :)

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

MongoDB придумывался для web, и отлично подходит для этого. Поэтому почему не попробовать ее в каком-нибудь поекте?
Там есть свой язык запрсов :)

Но это так, лирическое отступление.

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

Известно, что ASM уделывает C#, Java и практически всё остальное по скорости.
И чо?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801644
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuс трудом я это все перечитал...) Уже и боюсь что-то ещё спрашивать)
А по факту получилось куча методов
Код: c#
1.
2.
3.
4.
GetById(Id);
GetByName(name);
GetByNameAndId();
//...etc


Но из того что вы описывали в теме, как сделать по другому так и не понял)))И не поймёте, пока грамотно вопрос не зададите :)

Александр Бындю: "Использовать шаблон Specification вместе c шаблоном Query Object. Второй шаблон уже реализован в .NET с помощью дерева запросов на LINQ".

Domain-Driven Design: Repository (смотрите Решение №2)
Построение уровня доступа к данным с использованием шаблона "спецификация" в приложениях на ASP.NET MVC
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801647
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801691
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧерез плечо!

Выбор ORM-стратегии (.NET)

http://az.lib.ru/d/dostoewskij_f_m/text_0050.shtml

Почитай. И пойми сам, что я этим хотел сказать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801709
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, да всё тоже. Инструмент выбирается под задачу, возможно Парамону в конкретно его задаче dapper подойдёт лучше, чем EF.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801739
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, да всё тоже. Инструмент выбирается под задачу, возможно Парамону в конкретно его задаче dapper подойдёт лучше, чем EF.

Да понятно. Но твоё замечание «уделывает по скорости» несколько нелепо. Их нельзя сравнивать по скорости, ибо объём работы который выполняется в Dapper и EF различается конкретно. Если уж на то, то любой кавказец на шестёрочке «уделает» любого олипийца на велики, ведь Кавказ -- сила!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801785
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, да всё тоже. Инструмент выбирается под задачу, возможно Парамону в конкретно его задаче dapper подойдёт лучше, чем EF.

Да понятно. Но твоё замечание «уделывает по скорости» несколько нелепо. Их нельзя сравнивать по скорости, ибо объём работы который выполняется в Dapper и EF различается конкретно. Если уж на то, то любой кавказец на шестёрочке «уделает» любого олипийца на велики, ведь Кавказ -- сила! Ну не надо.

Например ты отказался от такого функционала как ленивая загрузка (lazy-loading) и предзагрузка (eager fetching) в угоду проекциям.
Ты попросту перестал на этут тему заморачиваться.

Так может и вообще не нужено всего того "объёма работ", что выполняет EF и задача полностью решится скоростью Dapper-а?
Почему бы не задуматься на эту тему Парамону, ТСу, ещё какому читателю, а?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801793
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, вот кстати такой вопрос.

Если в сессии был загружен объект (для изменений например)
Код: c#
1.
Service.GetEntityById(id)

и по окончанию запроса мы отдаём его проекцию
Код: c#
1.
Service.GetAll().Where(entity => entity.Id == id).ToProject().To<EntityProjection>()

То EF поймёт что надо брать объект из кэша, или будет делать отдельный запрос к БД?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801871
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНапример ты отказался от такого функционала как ленивая загрузка (lazy-loading) и предзагрузка (eager fetching) в угоду проекциям.
Ты попросту перестал на этут тему заморачиваться.

Так может и вообще не нужено всего того "объёма работ", что выполняет EF и задача полностью решится скоростью Dapper-а?
Почему бы не задуматься на эту тему Парамону, ТСу, ещё какому читателю, а?

Я не отказывался от ленивой загрузки. В проекции также могут быть целые объекты, с ленивыми пропертями. А от «жадной» загрузки да -- в основном отказался. Не нашлось ещё такой задачи, где бы оно пригодилось. Я ж не буду под какую-то непонятную возможность специально выдумывать задачу?

Кроме этого у EF есть целый вагон способностей, которых нет у Dapper. Если же в приоритете массивная работа с данными и она должна быть максимально быстрой, то можно посмотреть на Dapper. Или вообще NoSQL.

Просто странно, что вдруг внезапно предложил на «выбор» другой ORM — точнее micro ORM. Просто так. К чему бы это? Я уверен, что Парамон в состоянии исследовать варианты, если возникнет такая необходимость.

Когда EF был только в зачаточном состоянии, я использовал BLToolkit, ещё NHibernate (но этот пациент мне вообще не понравился, просто субъективно не вышло у нас подружиться). Потом увидел, что EF достиг юзабельного состояния и перешёл на него. О чём ни разу не пожалел. Последние версии EF работают очень даже шустро. Мало? Тогда прикручивается кеш 2 уровня, и вообще всё в шоколаде.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801875
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, вот кстати такой вопрос.

Если в сессии был загружен объект (для изменений например)
Код: c#
1.
Service.GetEntityById(id)


и по окончанию запроса мы отдаём его проекцию
Код: c#
1.
Service.GetAll().Where(entity => entity.Id == id).ToProject().To<EntityProjection>()


То EF поймёт что надо брать объект из кэша, или будет делать отдельный запрос к БД?

Зачем его куда-то отдавать? UOW.Save() и дело с концом.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801881
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТо EF поймёт что надо брать объект из кэша, или будет делать отдельный запрос к БД?

В рамках сессии один и тот же объект берётся из кеша. Но запрос с условием Where заставляет EF повторить запрос, даже если условие по Id. Это логично. Ну а если приделан кеш 2 уровня, повторного запроса к базе может и не быть.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801889
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПоследние версии EF работают очень даже шустро. Мало? Тогда прикручивается кеш 2 уровня, и вообще всё в шоколаде.Ты случаем не про эту ли статью: Second-Level Caching in the Entity Framework and Azure ?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801900
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, вот кстати такой вопрос.

Если в сессии был загружен объект (для изменений например)
Код: c#
1.
Service.GetEntityById(id)


и по окончанию запроса мы отдаём его проекцию
Код: c#
1.
Service.GetAll().Where(entity => entity.Id == id).ToProject().To<EntityProjection>()


То EF поймёт что надо брать объект из кэша, или будет делать отдельный запрос к БД?

Зачем его куда-то отдавать? UOW.Save() и дело с концом.Хм.

Пользователь запостил изменения, для изменений ты тянешь Entity.
Применили изменения, пользователю нужно отдать данные для отображения во View. Для отображения ты используешь проекции.

Вроде так.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801901
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttПоследние версии EF работают очень даже шустро. Мало? Тогда прикручивается кеш 2 уровня, и вообще всё в шоколаде.Ты случаем не про эту ли статью: Second-Level Caching in the Entity Framework and Azure ?

Я про https://efcache.codeplex.com/
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801905
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...
Ты случаем не про эту ли статью: Second-Level Caching in the Entity Framework and Azure ?

Я про https://efcache.codeplex.com/ Использовал? С чем? Redis, Couchbase?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801906
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAХм.

Пользователь запостил изменения, для изменений ты тянешь Entity.
Применили изменения, пользователю нужно отдать данные для отображения во View. Для отображения ты используешь проекции.

Вроде так.

А понял о чём ты. После сабмита данные будут извлечены ещё раз, если они будут затребованы, так за это время могут быть ещё и другие изменения (другими потоками например), которые следует учесть, чтобы отправляемые данные были максимально актуальны.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801909
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttпропущено...


Я про https://efcache.codeplex.com/ Использовал? С чем? Redis, Couchbase?

Memory. Но в ближайшее время планируем поработать с Redis, как раз проект назревает, где может понадобиться работать с приличными нагрузками.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801919
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAХм.

Пользователь запостил изменения, для изменений ты тянешь Entity.
Применили изменения, пользователю нужно отдать данные для отображения во View. Для отображения ты используешь проекции.

Вроде так.

А понял о чём ты. После сабмита данные будут извлечены ещё раз, если они будут затребованы, так за это время могут быть ещё и другие изменения (другими потоками например), которые следует учесть, чтобы отправляемые данные были максимально актуальны.Окей. А теперь представь, что вы перешли на Redis. Следовательно другие потоки обновили в нём данные.

EF поймёт это в случае с проекциями? Или тебе надо попробовать?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801922
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя если у вас один сервер, то должно работать и с Memory. При чём тут другие потоки, если всё в рамках одного пула?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801923
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что отмаза не катит :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801933
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОкей. А теперь представь, что вы перешли на Redis. Следовательно другие потоки обновили в нём данные.

EF поймёт это в случае с проекциями? Или тебе надо попробовать?

Поймёт, если кеш реализован правильно. В случае не-Memory, а, например, Redis, не могу пока ответить на эти вопросы. Опыта пока соответствующего нет.

skyANAХотя если у вас один сервер, то должно работать и с Memory. При чём тут другие потоки, если всё в рамках одного пула?

Один, другие потоки в смысле, другие пользователи параллельно сделали изменения, проекцию всегда надо брать из одного источника (считая кеш 2 уровня).
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801934
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТак что отмаза не катит :)

Чего, какие отмазы?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801943
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAТак что отмаза не катит :)

Чего, какие отмазы? Ну ты пишешь: "за это время могут быть ещё и другие изменения (другими потоками например), которые следует учесть".

При этом у вас кэш второго уровня в памяти, зачем что-то учитывать, если EF это разруливает? Или таки не разруливает? :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801949
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу ты пишешь: "за это время могут быть ещё и другие изменения (другими потоками например), которые следует учесть".

При этом у вас кэш второго уровня в памяти, зачем что-то учитывать, если EF это разруливает? Или таки не разруливает? :)

Ты взял Entity, изменил его, сохранил.

Затем взял проекцию EntitySomeDto, которая может (и скорее всего будет) включать данные из других зависимых таблиц. Про изменения в них EF ничего не знает в рамках контекста. Никто ничего не разруливает, если данные, попадающие в проекцию есть в кеше, то запроса к базе данных не будет. Это сильно зависит от реализации кеша, так как EF его не реализует.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801958
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЭто сильно зависит от реализации кеша, так как EF его не реализует.То есть кэш-таки надо самому реализовывать под свои нужды?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801984
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttЭто сильно зависит от реализации кеша, так как EF его не реализует.То есть кэш-таки надо самому реализовывать под свои нужды?

А кто это сделает за тебя, если никто кроме тебя твоих нужд не знает?

Но https://efcache.codeplex.com/ хорошая основа. Не исключено, что появятся обобщённые решения под редиску и другие шутки.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802030
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...
То есть кэш-таки надо самому реализовывать под свои нужды?

А кто это сделает за тебя, если никто кроме тебя твоих нужд не знает?Вооот!

И так посмотришь на EF: того, что мне нужно нет, сего. И проще взять dapper и дописать к нему всё, что тебе нужно.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802042
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВооот!

И так посмотришь на EF: того, что мне нужно нет, сего. И проще взять dapper и дописать к нему всё, что тебе нужно.

Возможно. Только надо не смотреть на него, а пользоваться им, затем делать утверждения исходя из опыта, а не каких-то ощущений. А же если не собираешься пользоваться, то и смотреть не надо, просто игнорь.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802047
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВооот!

И так посмотришь на EF: того, что мне нужно нет, сего. И проще взять dapper и дописать к нему всё, что тебе нужно.

Возможно. Только надо не смотреть на него, а пользоваться им, затем делать утверждения исходя из опыта, а не каких-то ощущений. А же если не собираешься пользоваться, то и смотреть не надо, просто игнорь. У нас исторически NHibernate. Наелись им.

В каких-то местах уже используем dapper, и знаешь, полностью устраивает :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802054
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ нас исторически NHibernate. Наелись им.

Фу-фу-фу, бяка. У нас тоже он есть местами, исторически.

skyANAВ каких-то местах уже используем dapper, и знаешь, полностью устраивает :)

А нас EF вполне даже устраивает
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802389
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, да всё тоже. Инструмент выбирается под задачу, возможно Парамону в конкретно его задаче dapper подойдёт лучше, чем EF.

Да понятно. Но твоё замечание «уделывает по скорости» несколько нелепо. Их нельзя сравнивать по скорости, ибо объём работы который выполняется в Dapper и EF различается конкретно. Если уж на то, то любой кавказец на шестёрочке «уделает» любого олипийца на велики, ведь Кавказ -- сила!
руки прочь от кавказа! кавказ не трошь!!!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802534
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosруки прочь от кавказа! кавказ не трошь!!!

Дык
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802786
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА насчет ORM: известно, что dapper уделывает EF по скорости, и возможно под задачи Парамона лучше подойдет он, чем EF.
Когда EF станет у нас бутылочным горлышком, то будем думать, а пока что свою работу делает )
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802855
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAА насчет ORM: известно, что dapper уделывает EF по скорости, и возможно под задачи Парамона лучше подойдет он, чем EF.
Когда EF станет у нас бутылочным горлышком, то будем думать, а пока что свою работу делает )Ну меня это мало интересует :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802868
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПарамонпропущено...

Когда EF станет у нас бутылочным горлышком, то будем думать, а пока что свою работу делает )Ну меня это мало интересует :)
А показалось, что ты мне что-то предлогал )
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802873
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAпропущено...
Ну меня это мало интересует :)
А показалось, что ты мне что-то предлогал )Даже если и предлагал, то это не значит, что мне интересны ваши горлышки.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802877
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПарамонпропущено...

А показалось, что ты мне что-то предлогал )Даже если и предлагал, то это не значит, что мне интересны ваши горлышки.
Горлышки, хе, с понятием Bottleneck в программной архитектуре ты не знаком )
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38802940
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAпропущено...
Даже если и предлагал, то это не значит, что мне интересны ваши горлышки.
Горлышки, хе, с понятием Bottleneck в программной архитектуре ты не знаком )Просвети, желательно с конкретными метриками.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38803165
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПросвети, желательно с конкретными метриками.

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

Троллинг моде он Со стороны Пармона, да. А мне же реально интересно, даже тема для этого была создана: " Производительность приложений. Мониторинг и профилирование. ".

Глядишь, может парень какими-то ценными знаниями поделится. :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38803330
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПарамонпропущено...

Горлышки, хе, с понятием Bottleneck в программной архитектуре ты не знаком )Просвети, желательно с конкретными метриками.
раз гугель в бане, я начну с простых иллюстраций
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38803353
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAпропущено...
Просвети, желательно с конкретными метриками.
раз гугель в бане, я начну с простых иллюстраций Фиговое начало, картинка не отображается.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38803370
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПарамонпропущено...

раз гугель в бане, я начну с простых иллюстраций Фиговое начало, картинка не отображается.
хе, в FF глянь. Чо-то хрон все хуже )



...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38803396
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAпропущено...
Фиговое начало, картинка не отображается.
хе, в FF глянь. Чо-то хрон все хуже )



О, ты про это. Да я в этом эксперт. Так что проходи мимо, тролололь!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38804253
Gluck_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВ реальности бывают и простые объекты и сложные.

Вот нужно будет тебе 100 карточек через Web API отдать наружу, ты получается 200 запросов к БД вместо 100 будешь посылать даже если чётко представляешь, что "жадная загрузка" не представляет из себя избыточный SELECT?

Ну и опять какие-то левые слова пошли :) Что такое чертежи?

Хуже, когда нужно достать из БД N карточек, подпадающих под определенное условие, с включением M навигационных свойств.

Тогда при использовании Include будет сделан 1 (но, возможно, сложный) SQL-запрос.
При Lazy loading будет выполнено 1 + N*M запросов.

Если предполагается включить большое количество навигационных свойств (особенно коллекций) и запрос получается слишком громоздкий, то его можно разбить на несколько с разными инклюдами (на сколько именно и каких решаем при помощи SQL-профайлера и здравого смысла) и выполнить их последовательно с MergeOption.AppendOnly. В данном случае будет фиксированное кол-во запросов, не зависящее от числа возвращенных карточек.

Также никто не запрещает комбинировать Eager и Lazy loading. Например, когда заранее неизвестно, какие именно навигационные свойства потребуются. В этом случае может иметь смысл "жадно" загрузить те навигационные свойства, которые потребуются с большей вероятностью, и "лениво" подгружать остальные.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38804605
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck_13Хуже, когда нужно достать из БД N карточек, подпадающих под определенное условие, с включением M навигационных свойств.

Чтобы больше не городить подобную небогоугодную чушь, надо просто понять, сколько информации за раз обычно нужно пользователю, сколько на экране места, для того, чтобы её отобразить, и со сколькими разными сущностями человек может работать одновременно. И тогда все эти «жадные» загружки отправяться лесом за ненадобностью. Если у кого-то вагон ненужного времени, и больше в этой жизни заняться-то нечем, может колупать себе и остальным мозг на тему абстрактных карточек и как их лучше всего «грузить».

Этот бред уже переваливает за край. Накуй пользователю эти ваши M навигационных свойств? И зачем дрочить базу данных, канал связи, оперативу и мозг по этому поводу? Бери только то, что нужно, именно так работают с базой данных.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38804684
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, это хорошо, когда одно View, где нужен один набор проекций.

А когда у тебя K представлений, то начинаются вопросы.
А если данные нужны не для отображения а для массовой обработки?

Вообщем проекции постепенно перестают быть DTO и начинают пролазить в бизнес-логику :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38804813
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, это хорошо, когда одно View, где нужен один набор проекций.

А когда у тебя K представлений, то начинаются вопросы.
А если данные нужны не для отображения а для массовой обработки?

Вообщем проекции постепенно перестают быть DTO и начинают пролазить в бизнес-логику :)

Если речь идёт о попытке сэкономить на кодировании, городя К представлений, то это весьма наивно.

Проекции итак являются частью бизнес-логики, потому что как раз представляют данные, которые нужны бизнесу (для работы и отображения), а не формат их хранения.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38805138
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, это хорошо, когда одно View, где нужен один набор проекций.

А когда у тебя K представлений, то начинаются вопросы.
А если данные нужны не для отображения а для массовой обработки?

Вообщем проекции постепенно перестают быть DTO и начинают пролазить в бизнес-логику :)

Если речь идёт о попытке сэкономить на кодировании, городя К представлений, то это весьма наивно.

Проекции итак являются частью бизнес-логики, потому что как раз представляют данные, которые нужны бизнесу (для работы и отображения), а не формат их хранения.Не понял мысль.

Возможно от того, что решал сейчас набор задач в комплексных числах. Контекст не переключается :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38805357
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе понял мысль.

Ок

skyANAА когда у тебя K представлений, то начинаются вопросы.

Надо понимать, что представлений обычно больше, чем 1.
У меня вопросов по этому поводу не возникает. Ну К, так К. Или М. Чем больше требуется представлений, тем сложнее приложение, это нормально.

skyANAА если данные нужны не для отображения а для массовой обработки?

Какой, вычисления? Ну тем более, через отражения легко аккумулировать данные. Если требуются сложные вычисления, которые невозможно (или нерационально) выполнять на уровне запросов, то какая разница, как брать данные? Требуется трансфер и преобразование данных? Тоже самое, с проекциями можно выполнить всю или большую часть работы. Что ещё требуется? Загружать сложнейшее состояние из базы данных, включающее в себя тонну связей? Ну возможно потребуется несколько проекций, а может вообще они не потребуется. Конкретики бы.

skyANAВообщем проекции постепенно перестают быть DTO и начинают пролазить в бизнес-логику :)

Я сторонник эффективного, быстрого и успешного решения задач. Я разделяю архитектуру на слои не просто потому что так где-то написано или так кем-то принято. Я вижу в этом определённые и вполне конкретные преимущества. Проекции в этой архитектуре обычно существуют на стыке слоя доступа к данным и бизнес-логики, при чём сама конфигурация проекции -- это область компетенции бизнес-логики, так как это ей нужны данные, а из слоя доступа к данным всего лишь торчит репозиторий с очень простым обобщённым интерфейсом. Там нет никаких проекций, только чистая модель данных (EDM).

Короче, класс проекции, это DTO. А сама конфигурация проекции -- это бизнес-логика. Таким образом бизнес-логика может отдавать DTO, или иметь свою модель собираемую из DTO, или комбинировать эти техники наиболее эффективным образом.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38805460
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНе понял мысль.

Ок

skyANAА когда у тебя K представлений, то начинаются вопросы.

Надо понимать, что представлений обычно больше, чем 1.
У меня вопросов по этому поводу не возникает. Ну К, так К. Или М. Чем больше требуется представлений, тем сложнее приложение, это нормально.Тут я имел в виду, что клиентов у бизнес логики может быть K: сайт, десктоп, сервисы, выгрузки какие-то, API.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38805521
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТут я имел в виду, что клиентов у бизнес логики может быть K: сайт, десктоп, сервисы, выгрузки какие-то, API.

Так REST-же. Проекции для REST -- то, что доктор прописал. Они же могут дополнительно кешироваться (3 level) по типу. На проекции делаются нормальный IQueryable запросы, что выгодно для OData (да и вообще). Ну круто я считаю.
...
Рейтинг: 0 / 0
357 сообщений из 357, показаны все 15 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь один к одному EF Code First
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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