我在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方法上表示的那些。
实际上,我需要一个带有Enumerador属性的Clientes对象,其中填充了相关的TiposIva数据
我尝试:
return this.RepositoryContext.Clientes
.Include(c => c.CondicionIva.ToEnumerador())
.FirstOrDefault();
但是我得到这个错误:
System.InvalidOperationException HResult = 0x80131509 Mensaje =包含属性lambda表达式'c => c.CondicionIva.ToEnumerador()'无效。该表达式应表示属性访问:“ t => t.MyProperty”。要定位在派生类型上声明的导航,请指定目标类型的显式键入的lambda参数,例如'(派生d)=> d.MyProperty'。有关包含相关数据的更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=746393。 Origen = Microsoft.EntityFrameworkCore Seguimiento de la pila: 在Microsoft.EntityFrameworkCore.Query.ResultOperators.Internal.IncludeExpressionNode.CreateResultOperator(ClauseGenerationContext子句GenerationContext) 在Remotion.Linq.Parsing.Structure.IntermediateModel.ResultOperatorExpressionNodeBase.ApplyNodeSpecificSemantics(QueryModel queryModel,ClauseGenerationContext子句GenerationContext) 在Remotion.Linq.Parsing.Structure.IntermediateModel.MethodCallExpressionNodeBase.Apply(QueryModel queryModel,ClauseGenerationContext子句GenerationContext) 在Remotion.Linq.Parsing.Structure.QueryParser.ApplyAllNodes(IExpressionNode节点,ClauseGenerationContext子句GenerationContext) 在Remotion.Linq.Parsing.Structure.QueryParser.ApplyAllNodes(IExpressionNode节点,ClauseGenerationContext子句GenerationContext) 在Remotion.Linq.Parsing.Structure.QueryParser.GetParsedQuery(Expression expressionTreeRoot) 在Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore [TResult](表达式查询,IQueryModelGenerator queryModelGenerator,IDatabase数据库,IDiagnosticsLogger
1 logger, Type contextType) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass13_0
1.b__0() 在Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore [TFunc](对象cacheKey,Func1 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.Servicios.Clientes_svc.Cargar(Int32 id)中的C:\ Users \ Eric \ Documents \ Fuentes Ohmio WEB \ Server EF \ OhmioServicios \ Servicios \ Clientes_svc.cs:line 50 在OhmioWEBAPINetCore.Controllers.ClientesController.GetCliente(Int32 idCliente)中的C:\ Users \ Eric \ Documents \ Fuentes Ohmio WEB \ Server EF \ OhmioWEBAPINetCore \ Controllers \ ClientesController.cs:line 38 在Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target,Object []参数) 在Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__12.MoveNext()
答案 0 :(得分:0)
那样无法正常工作。 “包含”您只能使用导航属性。 您无需在“包含”内调用.ToEnumerador()方法,只需使用TiposIva。