Какой .net ORM может справиться с этим сценарием

Из предыдущий вопрос я узнал, что Linq to SQL не может загружать только определенные файлы таблиц foreingKey.

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

  -- simplified for clarity
  SELECT Order.*, Product.Name, Customer.Name, OrderType.Name, Provider.Name
  FROM Order
      INNER JOIN Product on Order.ProductID = Product.ProductID
      INNER JOIN Customer on Order.CustomerID = Customer.CustomerID
      INNER JOIN OrderType on Order.OrderTypeID = OrderType.OrderTypeID
      INNER JOIN Provider on Order.ProviderID = Provider.ProviderID

Я хочу, чтобы это было как можно проще (пытаюсь избежать NHibernate и т. д.)

Интересно, что вы стремитесь достичь «простоты», избегая NHibernate. Хотя у NHibernate есть сложности, они предназначены для сложных ситуаций - простые вещи действительно просты.

Bevan 23.10.2009 10:18

ИМО, каждая внешняя деталь, которую вы добавляете в проект, добавляет сложности. Вам придется иметь дело с патчами и новыми выпусками, не говоря уже об изучении NQL или HQL.

Eduardo Molteni 23.10.2009 16:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
720
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

В рамках прогноза LINQ-to-SQL должен справиться с этим - пробовали ли вы

select new {Order = order, ProductName = order.Product.Name,
             CustomerName = order.Customer.Name,
             OrderType = order.OrderType.Name } // etc

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

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

DataObjects.Net обрабатывает это абсолютно так же, как LINQ 2 SQL:

from order in Query<Order>.All
where ...
select new {
  Order = order, 
  ProductName = order.Product.Name,
  CustomerName = order.Customer.Name,
  OrderType = order.OrderType.Name 
}

Другие вопросы по теме