Из предыдущий вопрос я узнал, что 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 и т. д.)
ИМО, каждая внешняя деталь, которую вы добавляете в проект, добавляет сложности. Вам придется иметь дело с патчами и новыми выпусками, не говоря уже об изучении NQL или HQL.





В рамках прогноза 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
}
Интересно, что вы стремитесь достичь «простоты», избегая NHibernate. Хотя у NHibernate есть сложности, они предназначены для сложных ситуаций - простые вещи действительно просты.