Информация об изменениях

Сообщение Re[19]: вопрос hi_octane про c# от 09.09.2020 6:14

Изменено 09.09.2020 10:45 Serginio1

Re[19]: вопрос hi_octane про c#
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Sinclair, Вы писали:


S>>>>
S>>>>public IQueryable<OrderLine> GetOrderLines(DataConnection conn, int productID, DateTime? orderDateMin)
S>>>>{
S>>>>  var q = from line in conn.GetTable<OrderLine> where line.ProductID == productID select line;
S>>>>  if(orderDateMin.HasValue)
S>>>>    q = from line in q where line.Order.OrderDate>=orderDateMin.Value select line;
S>>>>}
S>>>>




_>Оу, оу, вот именно про такое неудобство я и говорил. Вот как я мог из этого кода узнать о существование таблицы orders? Т.е. я даже не вижу упоминаний её в коде, а Linq при этом суёт мне аж join с ней. То ли дело явное задание всех join'ов.


_>Ну и да, после отработки метакода в таком случае будет просто двойнной if (хотя от оптимизатора зависит — он может и одинарным сделать).


Ну вот сразу видно, что ты с ОRM не имел дела. В том же 1С и EF это нормальная практика. Виртуальные свойства называются, только у них можно доступ иметь через 2 и более точки.

Мало того таких ифоф может быть огромная куча.
Например как универсальные отчеты типа https://www.linqpad.net/
Когда можно составить любой запрос, с любыми объединениями и группировками и полями
Одним из преимуществ .Net это динамическая компиляция https://infostart.ru/1c/articles/547389/
Re[19]: вопрос hi_octane про c#
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Sinclair, Вы писали:


S>>>>
S>>>>public IQueryable<OrderLine> GetOrderLines(DataConnection conn, int productID, DateTime? orderDateMin)
S>>>>{
S>>>>  var q = from line in conn.GetTable<OrderLine> where line.ProductID == productID select line;
S>>>>  if(orderDateMin.HasValue)
S>>>>    q = from line in q where line.Order.OrderDate>=orderDateMin.Value select line;
S>>>>}
S>>>>




_>Оу, оу, вот именно про такое неудобство я и говорил. Вот как я мог из этого кода узнать о существование таблицы orders? Т.е. я даже не вижу упоминаний её в коде, а Linq при этом суёт мне аж join с ней. То ли дело явное задание всех join'ов.


_>Ну и да, после отработки метакода в таком случае будет просто двойнной if (хотя от оптимизатора зависит — он может и одинарным сделать).


Ну вот сразу видно, что ты с ОRM не имел дела. В том же 1С и EF это нормальная практика. Виртуальные свойства называются, только у них можно доступ иметь через 2 и более точки.
https://metanit.com/sharp/entityframework/3.2.php

Мало того таких ифоф может быть огромная куча.
Например как универсальные отчеты типа https://www.linqpad.net/
Когда можно составить любой запрос, с любыми объединениями и группировками и полями
Одним из преимуществ .Net это динамическая компиляция https://infostart.ru/1c/articles/547389/