EF Включить свойство навигации с определенной картой - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть два класса в EF NET Core, которые представляют объекты базы данных:

public partial class Clientes
{
    public int IdCliente { get; set; }
    public TiposIva CondicionIva { get; set; }
}

public partial class TiposIva
{
    public int IdCondicionIva { get; set; }
    public string Descripcion { get; set; }
    public string Letra { get; set; }
    public string Fiscal { get; set; }

    public Enumerador ToEnumerador() {
        return new Enumerador { ID = this.IdCondicionIva, Valor = this.Descripcion };
    }
}

Теперь я пытаюсь написать запрос, который возвращает объект Clientes и включает свойство TiposIva (навигация), ноне все из них, только те, что представлены в методе ToEnumerador.

На самом деле мне нужен объект Clientes со свойством Enumerador, заполненным соответствующими данными TiposIva

Я пытаюсь это:

return this.RepositoryContext.Clientes
            .Include(c => c.CondicionIva.ToEnumerador())
            .FirstOrDefault();

Но я получаюэта ошибка:

System.InvalidOperationException HResult = 0x80131509 Mensaje = Недопустимое лямбда-выражение свойства Include 'c => c.CondicionIva.ToEnumerador ()'.Выражение должно представлять доступ к свойству: 't => t.MyProperty'.Чтобы нацелить навигацию, объявленную на производные типы, укажите лямбда-параметр с явно заданным типом целевого типа, например, «(Derived d) => d.MyProperty».Дополнительную информацию о включении связанных данных см. В http://go.microsoft.com/fwlink/?LinkID=746393. Origen = Microsoft.EntityFrameworkCoreStructure.IntermediateModel.ResultOperatorExpressionNodeBase.ApplyNodeSpecificSemantics (queryModel queryModel, ClauseGenerationContext clauseGenerationContext) при Remotion.Linq.Parsing.Structure.IntermediateModel.MethodCallExpressionNodeBase.Apply (queryModel queryModel, ClauseGenerationContext clauseGenerationContext) в Remotion.Linq.Parsing.Structure.QueryParser.ApplyAllNodes (IExpressionNode узел, ClauseGenerationContext clauseGenerationContext) в Remotion.Linq.Parsing.Structure.QueryParser.ApplyAllNodes (узел IExpressionNode, ClauseGenerationContext clauseGenerationContext) в Remotion.Linq.Parsing.Strused.reet.Ru.Exet.PlayerntityFrameworkCore.Query.Internal.Источник Func 1 compiler) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query) at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable 1) в OhmioRepositorios.ClientesRepository.Cargar (Int32 IdCliente) в C: \ Users \ Eric \ Documents \ Fuentes Ohmio WEB \ Server EF \ OhmioRepositorios \ ClientesRepository.cs: строка 40 в OhmioServicios.Servics.Carvics(Int32 id) в C: \ Users \ Eric \ Documents \ Fuentes Ohmio WEB \ Server EF \ OhmioServicios \ Servicios \ Clientes_svc.cs: строка 50 в OhmioWEBAPINetCore.Controllers.ClientesController.GetCliente (пользователи Int32 idCliente в Эрике)\ Documents \ Fuentes Ohmio WEB \ Server EF \ OhmioWEBAPINetCore \ Controllers \ ClientesController.cs: строка 38 в Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute (объектная цель, параметры Object []) в Microsoft.AspNetCore.Mvc.Internal.ControlAction.d__12.MoveNext ()

1 Ответ

0 голосов
/ 27 ноября 2018

Так не получится.«Включить» можно только с помощью навигационных свойств.Вам не нужно вызывать метод .ToEnumerador () внутри «Включить», используйте только TiposIva.

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