首页 > 解决方案 > EntityFramework Extensions UpdateFromQuery 中的无效更新表达式异常

问题描述

我正在使用 EF 6 和 Z.EntityFramework.Extensions。

以下代码:

using (var context = contextFactory())
{
    var modified = context.Receita.
        Where(r => r.V_UID == receitaEletronica.VendaUid && r.numeroreceita == receitaEletronica.NumeroReceita).
        Join(context.Tabela_Comparticipacao.
            Where(t => entidades.Contains(t.ec_uid)).
            Join(context.Tabela_Comparticipacao.Where(t => t.flag_elect == 1),
                source => source.ec_uid,
                dest => dest.ec_uid,
                (source, dest) => new { Source = source, Dest = dest }),
            r => r.TaCo_UID,
            t => t.Source.TaCo_UID,
            (r, t) => new { Receita = r, NovoTaCo = t.Dest.TaCo_UID }).
        UpdateFromQuery(r => new Receita { TaCo_UID = r.NovoTaCo });
}

抛出以下异常:

Message: 
    Test method winphar.services.receitas.ReceitasDAOTest.TestAtualizarReceitaElectronicaTaCoUidEntidadesCentralizadas threw exception: 
    System.Exception: Oops! Invalid update expression, the body is not a NewExpression. Please refer to the documentation to get examples about how to use this feature.
  Stack Trace: 
    DbContextExtensions.[](IQueryable`1 , Expression`1 , Action`1 , Boolean )
    DbContextExtensions.UpdateFromQuery[TEntity](IQueryable`1 query, Expression`1 updateExpression, Action`1 bulkOperationFactory)
    DbContextExtensions.UpdateFromQuery[TEntity](IQueryable`1 query, Expression`1 updateExpression)
    ReceitasDAO.AtualizarReceitaElectronicaTaCoUidEntidadesCentralizadas(ReceitaEletronica receitaEletronica, List`1 entidades) line 114
    ReceitasDAOTest.TestAtualizarReceitaElectronicaTaCoUidEntidadesCentralizadas() line 267

我究竟做错了什么?

标签: entity-framework-6

解决方案


推荐阅读