powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Info: Про LINQ -Мастер детальная связка дочитывание
39 сообщений из 39, показаны все 2 страниц
Info: Про LINQ -Мастер детальная связка дочитывание
    #35081713
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! Если в профайлере посмотреть как ведёт себя мастердетальная связка из примеров то детальная часть допочитывается по мере движения по мастеру вниз, если вернуться вверх к пройденным, то запроса на сервер не производится.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35081740
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatПривет всем! Если в профайлере посмотреть как ведёт себя мастердетальная связка из примеров то детальная часть допочитывается по мере движения по мастеру вниз, если вернуться вверх к пройденным, то запроса на сервер не производится.
deffered loading называется, это типа Lazy fetch грекси, но он не захотел это признать.
Но нифига хорошего тоже нет, надо постояннно refresh делать в случае чего. Вобщем, нет этой чертовой пули. :( Все ручкми, только время теряешь на все эти ОРМ и всякое говно.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35081879
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот гавном попрошу не кидаться, лучше ковыряйтесь в своем дальше ручками и никого не пачкайте.
почитайте про рекомендации по использованию DataContext, не надо класть его в сессию или свой синглтон и пользоваться им до потери пульса.

что хотел сказать автор я не понял, то-ли он очень обрадовался и захотел со всеми поделиться, то-ли ещё что
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082024
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зывот гавном попрошу не кидаться, лучше ковыряйтесь в своем дальше ручками и никого не пачкайте.
почитайте про рекомендации по использованию DataContext, не надо класть его в сессию или свой синглтон и пользоваться им до потери пульса.

что хотел сказать автор я не понял, то-ли он очень обрадовался и захотел со всеми поделиться, то-ли ещё что
Народ уже выжил из ума видать со своими обертками. Дообертывались до того , что уже суть потеряли.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082057
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов
Народ уже выжил из ума видать со своими обертками. Дообертывались до того , что уже суть потеряли.
у вас какие-то проблемы с выражением собственных мыслей? хотите сказать, но получается, как вы говорите, "гавно"? постарайтесь не утруждать себя больше подобной водичкой
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082111
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы Сахават Юсифов
Народ уже выжил из ума видать со своими обертками. Дообертывались до того , что уже суть потеряли.
у вас какие-то проблемы с выражением собственных мыслей? хотите сказать, но получается, как вы говорите, "гавно"? постарайтесь не утруждать себя больше подобной водичкой
Моти мысли я сказал, а е вы тут дергаетесь, не понимаю. Я сказал, что принудительное кеширование без спроса не есть хорошо. Если я обращаюсь к данным повторно, то скорее всего я хочу актуальные данные, а не устаревшене говно. Есть чего сказать?
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082246
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов
Моти мысли я сказал, а е вы тут дергаетесь

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

Сахават Юсифов
Я сказал, что принудительное кеширование без спроса не есть хорошо. Если я обращаюсь к данным повторно, то скорее всего я хочу актуальные данные, а не устаревшене говно. Есть чего сказать?
ну во-первых, специально для вас предусмотрели возможность это отключить. Во вторых, это называется identity cache, кеш первого уровня. Если придерживаться простой логики и писать код, а не "говно", то ничего плохого в таком кеше нет, одни только плюсы. В течении вашей сессии работы с данными, данные как правило меняются исключительно вами. Устареть они могут, если держать их там пару часов, что видимо и соответствует архитектуре вашего "говно-кода". Удачи в начинаниях.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082289
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
что хотел сказать автор я не понял, то-ли он очень обрадовался и захотел со всеми поделиться, то-ли ещё что
Автор хотел обратить внимание на неочевидный способ кэширования, который програмер не управляет. Это очень не хорошо!
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082297
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
...


Откуда блин сколько вампиров развелось.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082299
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatАвтор хотел обратить внимание на неочевидный способ кэширования, который програмер не управляет. Это очень не хорошо!
Сказали же, что это Identity Map
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082300
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
ну во-первых, специально для вас предусмотрели возможность это отключить.

Как ?
зы
Во вторых, это называется identity cache, кеш первого уровня. Если придерживаться простой логики то ничего плохого в таком кеше нет, одни только плюсы. В течении вашей сессии работы с данными, данные как правило меняются исключительно вами.
Минус очевидны - я не могу прочитать originalValue у записи, доступен только Current!
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082318
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatМинус очевидны - я не могу прочитать originalValue у записи, доступен только Current!
Вот ведь мозг вам извратили датасеты эти... Меняйте образ мышления.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082351
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч
Вот ведь мозг вам извратили датасеты эти... Меняйте образ мышления.
Рад бы да база так устроена!
Кстати как вы думаете предполагает ли LINQ что рядом с ним будут использованы обычные DataSet? Ведь кол-во sql запрсов в программе на несколько порядков больше чем объектов сервера? Эти sql запросы то же надо в объекты сервера превращать? Это было бы очень плохо!
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082385
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatРад бы да база так устроена!
Как устроена? Каким боком OriginalValue соотносится с базой?
Bill Great
Кстати как вы думаете предполагает ли LINQ что рядом с ним будут использованы обычные DataSet? Ведь кол-во sql запрсов в программе на несколько порядков больше чем объектов сервера? Эти sql запросы то же надо в объекты сервера превращать? Это было бы очень плохо!
Оставьте уже эти ваши домыслы. Ничем не подкрепленные "Очень плохо" и "очень хорошо" -- это детский сад. Вы попробуйте почитать документацию (про те же анонимные типы, например), поработать с линком и ORM'ами, а потом аргументированно докажите, что такое хорошо, а что такое плохо.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082404
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч
Как устроена? Каким боком OriginalValue соотносится с базой?

Просто - делать update или insert зависит от разности CurrentValue - OriginalValue и это у нас часто бывает.
Повтроряю главный вопрос

Кстати как вы думаете предполагает ли LINQ что рядом с ним будут использованы обычные DataSet? Ведь кол-во sql запрсов в программе на несколько порядков больше чем объектов сервера? Эти sql запросы то же надо в объекты сервера превращать?
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082413
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatПросто - делать update или insert зависит от разности CurrentValue - OriginalValue и это у нас часто бывает.
А предметно? Слабо себе представляю такой вариант развития событий.
Bill Great
Ведь кол-во sql запрсов в программе на несколько порядков больше чем объектов сервера? Эти sql запросы то же надо в объекты сервера превращать?
Про анонимные типы прочитали уже?
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082454
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч
Bill Great
Ведь кол-во sql запрсов в программе на несколько порядков больше чем объектов сервера? Эти sql запросы то же надо в объекты сервера превращать?
Про анонимные типы прочитали уже?
То есть все JOIN UNION и т.д. при помощи LINQ? То есть реестр устроен типа

Код: plaintext
1.
2.
3.
4.
5.
6.
 var q =
        from c in db.Customers
        join o in db.Orders on c.CustomerID equals o.CustomerID into ords
        join e in db.Employees on c.City equals e.City into emps
        select new {c.ContactName, ords=ords.Count(), emps=emps.Count()};

bindinsource.DataSource = q;
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082473
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great
То есть все JOIN UNION и т.д. при помощи LINQ? То есть реестр устроен типа
Если Линк устраивает и справляется с запросами -- то все с его помошью, чего думать-то?
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082500
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great зы
ну во-первых, специально для вас предусмотрели возможность это отключить.

Как ?

свойство ObjectTrackingEnabled=false. Правда теряется и много всего другого, а datacontext превращается в обычную глупую читалку данных.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082513
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч Bill GreatПросто - делать update или insert зависит от разности CurrentValue - OriginalValue и это у нас часто бывает.
А предметно? Слабо себе представляю такой вариант развития событий.

мне конечно сложно домысливать, но я могу догадываться только что человек говорит об optimistic concurrency :)
автору - существует версионность, если при сохранении объекта в базу локальная версия не совпадет с тем, что в базе, произойдет ошибка, которую вам предложат обработать, взяв чистую свежую версию из базы (заметьте, это будет сделано исключительно по необходимости, а не постоянно "просто так"), обновить её новыми полями и сохранить обратно.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082551
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
свойство ObjectTrackingEnabled=false. Правда теряется и много всего другого, а datacontext превращается в обычную глупую читалку данных.
И заодно мастер детальная связ разваливается - деталь просто не считывается!

Код: plaintext
1.
2.
3.
4.
5.
            db = new Northwind(Program.connString);
            db.ObjectTrackingEnabled = false;// Если эту строку убрать деталь считывается!
            MasterbindingSource.DataSource = db.Orders;
            DetailbindingSource.DataSource = MasterbindingSource;
            DetailbindingSource.DataMember =  Order_Details
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082589
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы[quot Нахлобуч][quot Bill Great]Просто - делать update или insert зависит от разности CurrentValue - OriginalValue и это у нас часто бывает.
мне конечно сложно домысливать, но я могу догадываться только что человек говорит об optimistic concurrency :) автору - существует версионность, если при сохранении объекта в базу локальная версия не совпадет с тем, что в базе, произойдет ошибка, которую вам предложат обработать, взяв чистую свежую версию из базы (заметьте, это будет сделано исключительно по необходимости, а не постоянно "просто так"), обновить её новыми полями и сохранить обратно.
Варианты много проще
Редактируют приходную накладную, из строк с уменьшенным кол-вом надо сделать документ недосдачи, а из строк с увеличенным кол-вом доп приход.

Часто из за constainrt в базе порядок сохранения разный в зависимости от CurrentValue - OriginalValue. Скажем в строке мастер вы указываете общее кол-во, а в детали раскидываете его по строкам.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082600
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatВарианты много проще
Редактируют приходную накладную, из строк с уменьшенным кол-вом надо сделать документ недосдачи, а из строк с увеличенным кол-вом доп приход.

Часто из за constainrt в базе порядок сохранения разный в зависимости от CurrentValue - OriginalValue. Скажем в строке мастер вы указываете общее кол-во, а в детали раскидываете его по строкам.

Либо я чего-то не понимаю, либо все это совершенно просто решается без знания предыдущего значения.

В конце концов, никто не мешает клонировать объект для редактирования.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082604
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по коду не понятно что там куда развалилось. Можешь попробовать попросить закачивать насильно через DataLoadOptions LoadWith().
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082608
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great зы
свойство ObjectTrackingEnabled=false. Правда теряется и много всего другого, а datacontext превращается в обычную глупую читалку данных.
И заодно мастер детальная связ разваливается - деталь просто не считывается!

Код: plaintext
1.
2.
3.
4.
5.
            db = new Northwind(Program.connString);
            db.ObjectTrackingEnabled = false;// Если эту строку убрать деталь считывается!
            MasterbindingSource.DataSource = db.Orders;
            DetailbindingSource.DataSource = MasterbindingSource;
            DetailbindingSource.DataMember =  Order_Details

В случае master-detail отключать нельзя!
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082632
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыпо коду не понятно что там куда развалилось. Можешь попробовать попросить закачивать насильно через DataLoadOptions LoadWith().
Детальная часть не считывается! В исходном варианте главное что мастер сам знает что нужно считать!
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082635
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great
В случае master-detail отключать нельзя!
хватит чушь нести на албанском, напиши нормально без ошибок. Я не вижу в этих 4-х строчках кода никаких мастер-детальных связей, одни неизвестные переменные
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082685
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
this.MasterbindingSource = new System.Windows.Forms.BindingSource(this.components);
this.DetailbindingSource = new System.Windows.Forms.BindingSource(this.components);
this.dataGridView1.DataSource = this.MasterbindingSource;
this.dataGridView2.DataSource = this.DetailbindingSource;
// MasterbindingSource
// 
this.MasterbindingSource.DataSource = typeof(NorthwindMapping.Order);

// DetailbindingSource
// 
this.DetailbindingSource.DataMember = "Order_Details";
this.DetailbindingSource.DataSource = this.MasterbindingSource;

        Northwind db;
        public Form1()
        {
            InitializeComponent();
            db = new Northwind(Program.connString);
            db.ObjectTrackingEnabled = false;
            MasterbindingSource.DataSource = db.Orders;//
            bindingSource1.DataSource = db.Products;// master

        }

...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082692
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч Bill Great
То есть все JOIN UNION и т.д. при помощи LINQ? То есть реестр устроен типа
Если Линк устраивает и справляется с запросами -- то все с его помошью, чего думать-то?
Это не ахти что! Где типизированные колонки? Как узнать текущее значение?
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082708
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatЭто не ахти что! Где типизированные колонки? Как узнать текущее значение?
Вы обалдели что ли? В третий раз повторяю -- читайте про анонимные типы.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082739
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучВ третий раз повторяю -- читайте про анонимные типы.
Ну коль они анонимные то и приводить не к чему!
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082754
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatНу коль они анонимные то и приводить не к чему!
Удачи в дальнейших проектах!
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082758
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill Great НахлобучВ третий раз повторяю -- читайте про анонимные типы.
Ну коль они анонимные то и приводить не к чему!
Берём пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 var customers = testDS.Tables["Customers"].AsEnumerable();

    var orderCounts = from c in customers
        where c.Field<string>("CustomerID") != "AAAAA"
        select new {CustomerID = c.Field<string>("CustomerID"), 
            OrderCount = c.GetChildRows("CustomersOrders").Count()};
datagridview.Datasource = orderCounts; 

Как вы будете узнавать значение в колонке - чему оно соответствует CustomerID или OrderCount ?
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082776
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч
Удачи в дальнейших проектах!
Может вам так нравиться
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var customers = testDS.Tables["Customers"].AsEnumerable();
    var orders = testDS.Tables["Orders"].AsEnumerable();

    var smallOrders =
        from c in customers
        from o in orders
        where c.Field<string>("CustomerID") == o.Field<string>("CustomerID") &&
            o.Field<decimal>("Total") <  500 .00M
        select new {CustomerID = (string) c["CustomerID"], OrderID = (int) o["OrderID"], Total = (decimal) o["Total"]};

    DataTable myOrders = new DataTable();
    myOrders.Columns.Add("CustomerID", typeof(string));
    myOrders.Columns.Add("OrderID", typeof(int));
    myOrders.Columns.Add("Total", typeof(decimal));

    foreach (var result in smallOrders.Take( 10 ))
    {
        myOrders.Rows.Add(new object[] { result.CustomerID, result.OrderID, result.Total });
    }
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082853
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bill GreatКак вы будете узнавать значение в колонке - чему оно соответствует CustomerID или OrderCount ?
Скройтесь вы уже отсюда со своими датасетами.
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082856
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарисч неадекватен, в этой теме я завязываю :)
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082867
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зытоварисч неадекватен, в этой теме я завязываю :)
Пару слов напоследок. Всё это изменится пр переходе к Entity framework? Там возможны такие варианты

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
using (NorthwindEntities db = new NorthwindEntities()) {

    var customers = db.CreateQuery<Customer>(
        "SELECT VALUE c FROM NorthwindEntities.Customers AS c");

    foreach (var c in customers) {
        Console.WriteLine(c.Display());
    }
}
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082875
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если это был вопрос, то такое
Bill Great
Код: plaintext
1.
        "SELECT VALUE c FROM NorthwindEntities.Customers AS c");

там не понадобится, а возможно не только это, но и бОльшее
...
Рейтинг: 0 / 0
Info: Про LINQ -Мастер детальная связка дочитывание
    #35082975
Bill Great
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема закрыта! Entity Framework Beta 3 Samples
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Info: Про LINQ -Мастер детальная связка дочитывание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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