Asp.net web api 展开包含嵌套导航属性的导航属性时出错

Asp.net web api 展开包含嵌套导航属性的导航属性时出错,asp.net-web-api,odata,automapper-5,Asp.net Web Api,Odata,Automapper 5,我正在使用Web API构建OData服务。通过实体框架处理数据库访问 我正在使用AutoMapper将我的EF实体映射到另一组类。这些映射类是通过OData服务公开的 我有一个这样的模型: Assignment(int AssignmentId, int EmployeeId, Employee Employee) Employee(int EmployeeId, ICollection<Skill> Skills) Skill(int SkillId, string SkillN

我正在使用Web API构建OData服务。通过实体框架处理数据库访问

我正在使用AutoMapper将我的EF实体映射到另一组类。这些映射类是通过OData服务公开的

我有一个这样的模型:

Assignment(int AssignmentId, int EmployeeId, Employee Employee)
Employee(int EmployeeId, ICollection<Skill> Skills)
Skill(int SkillId, string SkillName)
[…]
实际上并不是错误的一部分,只是我删除的消息片段

此时,我还没有要求
技能
,我的期望是
Employee.Skills
不会被扩展,因为我没有明确要求扩展它。我不确定什么是
技能
,而什么是EF

我能说的最好的情况是,OData在我应用的任何投影之上应用了一个额外的投影,而EF正是在这个投影上遇到了问题

是否有人拥有使用OData/EF导航具有多个深度的酒店的经验/成功经验


我已经尝试删除AutoMapper并手动编写表达式,但仍然遇到相同的错误,因此我不认为AutoMapper会造成任何问题。

能否请您使用调用服务的实际uri更新您的问题,这将有助于我们缩小可能的原因。比较错误表明您在某个地方有一个筛选器,它可能不在uri中,可能是在代码中引入的。用这些缺失的信息更新,我将在回答一个愚蠢的问题中解释更多,先发制人的另一个常见原因是,您是否已将EnableQuery属性应用于您的端点?如果没有太多的代码,发布处理请求的方法将完成整个故事。我的ODataController上有EnableQueryAttribute。我将从头开始,编写一个尽可能简单的解决方案,重现问题,然后我将提供它,希望这将有助于使我的问题更加清楚(除了在问题中添加URL)。我将更新它一旦完成。也显示了实际的URL参数将是有价值的给我们在家中的投注者:所以我们可以确认我们的服务,也许会在中间与我们自己的简单演示为您TrII必须重新创建问题,以确切地知道哪一个URL是造成错误。我朝着另一个方向移动,现在很难复制它。我相信,当查询字符串像
?$expand=Skills
这样简单时,就发生了错误,但即使这样,最初也运行良好。错误仅在我向实体添加第二个导航属性或我正在扩展的导航属性本身将导航属性添加到第三个实体时开始。请使用调用服务时使用的实际uri更新您的问题,这将有助于我们缩小可能的原因。比较错误表明您在某个地方有一个筛选器,它可能不在uri中,可能是在代码中引入的。用这些缺失的信息更新,我将在回答一个愚蠢的问题中解释更多,先发制人的另一个常见原因是,您是否已将EnableQuery属性应用于您的端点?如果没有太多的代码,发布处理请求的方法将完成整个故事。我的ODataController上有EnableQueryAttribute。我将从头开始,编写一个尽可能简单的解决方案,重现问题,然后我将提供它,希望这将有助于使我的问题更加清楚(除了在问题中添加URL)。我将更新它一旦完成。也显示了实际的URL参数将是有价值的给我们在家中的投注者:所以我们可以确认我们的服务,也许会在中间与我们自己的简单演示为您TrII必须重新创建问题,以确切地知道哪一个URL是造成错误。我朝着另一个方向移动,现在很难复制它。我相信,当查询字符串像
?$expand=Skills
这样简单时,就发生了错误,但即使这样,最初也运行良好。仅当我将第二个导航属性添加到实体或正在扩展的导航属性本身将导航属性添加到第三个实体时,错误才会开始。
{"error":{"code":"","message":"An error has occurred.","innererror":{"message":"Cannot compare 'member 'Skills' of type '[...].Employee''. Only primitive types, enumeration types and entity types are supported.","type":"System.NotSupportedException"[...]}