Какой .net ORM может справиться с этим сценарием - PullRequest
1 голос
/ 19 декабря 2008

Из предыдущего вопроса я узнал, что 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 и тому подобное)

Ответы [ 3 ]

3 голосов
/ 19 декабря 2008

Как часть проекции, LINQ-to-SQL должен справиться с этим - вы пробовали

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

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

1 голос
/ 04 июля 2009

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 
}
0 голосов
/ 19 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...