批量批量更新

时间:2019-04-16 10:01:16

标签: c# entity-framework-plus

我想知道跟随联接是否是有效的用例?

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]

这是什么,我想通过可为空的导航属性来实现(使用db值更新实体)吗?

(“收件人”表具有“用户”表的可为空的导航属性)

0 个答案:

没有答案