Объединение нескольких строк в одну сущность в Entity Framework 4.1 - PullRequest
0 голосов
/ 12 марта 2012

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

У меня есть две таблицы (упрощенно ниже)

CREATE TABLE [dbo].[BarEvents]
(
[BarGUID]       UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID(),    
[Bar]               INT              NULL
)

CREATE TABLE [dbo].[BarLog]
(
[BarGUID] UNIQUEIDENTIFIER NOT NULL, 
[BarLogGUID] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID(),
[BarEventTime] DATETIME NOT NULL DEFAULT GETUTCDATE()
)

Так что, если я присоединяюсь к этим таблицам для определенного BarGUID, поэтому, если бы у меня было зарегистрировано 1 столбец и 4 столбца, у меня было бы 4 строки, но я хочу только самый последний BarEventTime. Поэтому я хотел бы присоединиться и иметь только одну строку:

Я могу сделать это тривиально в EF:

var query = barEntities.BarEvents.Where( q=> q.BarGUID = '0000-0000-0000-0000')
    .Select(barEvent =>
    new LogItem()
    {
        Bar = barEvent.Bar,
        BarEventTime =     barEvent.BarLog.Max(u => u.BarEventTime)
    });

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

Любая помощь будет оценена.

Спасибо.

1 Ответ

0 голосов
/ 12 марта 2012

Почему бы вам не сделать следующее:

  • Создать SQL View в базе данных, которая делает то, что вы хотите
  • Добавить представление к вашему EF Context
  • Используйте вновь созданную сущность, основанную на представлении
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...