Пакетное обновление с присоединением - PullRequest
0 голосов
/ 16 апреля 2019

Я хотел бы знать, будет ли следующее объединение правильным вариантом использования?

dbContext.Recipients.Include(nameof(Recipient.User))                                                                     
         .Where(r => r.EnvelopeId == dbEntry.EnvelopeId)                                                                       
         .Update(r => new Recipient 
                          {
                             UserId = dbContext.Users.Where(u => u.LowerEmail == r.LowerEmail)
                                                              .Select(u => u.Id)
                                                              .FirstOrDefault() 
         });

Я получаю следующую ошибку:

 The multi-part identifier "Project5.C1" could not be bound.
 The multi-part identifier "Project5.C2" could not be bound. ---> 
 System.Data.SqlClient.SqlException: The multi-part identifier "Project5.C1" could not be bound.
 The multi-part identifier "Project5.C2" could not be bound.

Что очевидно, если мы посмотрим натекст команды:

UPDATE A 
SET A.[UserId] =  
CASE WHEN ([Project5].[C1] IS NULL) THEN cast('00000000-0000-0000-0000-000000000000' as uniqueidentifier) ELSE [Project5].[C2] END 
FROM [dbo].[Recipient] AS A
INNER JOIN ( SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[UserId] AS [UserId], 
[Extent2].[Id] AS [Id1], 
FROM  [dbo].[Recipient] AS [Extent1]
LEFT OUTER JOIN [dbo].[User] AS [Extent2] ON [Extent1].[UserId] = [Extent2].[Id]
WHERE [Extent1].[EnvelopeId] = @p__linq__0
       ) AS B ON A.[Id] = B.[Id]

Это то, что я пытаюсь достичь (обновление сущности со значениями в БД) с помощью свойства навигации, допускающего обнуляемость?

(Таблица получателей имеетобнуляемое свойство навигации в таблице Users)

...