使用EntityFramework

时间:2015-06-02 16:21:08

标签: c# json asp.net-mvc entity-framework

我有一个使用EntityFramework的MVC应用程序。 我想返回一个具有导航属性的实体实例作为JsonResult,例如,一个Customer实例,它具有一个订单列表的导航属性。

我想知道最好的方法是什么:

  • 声明新的DTO /模型视图类以“平面化”实体,但似乎客户的冗余信息存储在每个DTO /视图模型中。
  • 按原样返回,然后在客户端进行处理。我不喜欢这种方法,因为我需要在客户端进行额外的处理,这很难调试。如果我在订单实体上有客户导航属性,则存在循环引用的风险。

感谢您的反馈!

2 个答案:

答案 0 :(得分:1)

我认为最好的选择是第二个:将数据作为嵌套列表返回。 但是你不应该一直扩展导航属性,并且在每个方法/端点中你应该定义并明确要扩展哪个属性(以避免你提到的循环引用问题加上其他性能问题)。 假设您有一个具有Orders属性的Customer对象,如果您需要将其返回,请执行以下操作:

return context.Users.Include(b => b.Orders).ToList(); 

如果您不需要在单独的终点订单,您可以退回客户。

答案 1 :(得分:1)

在大型项目中,我认为最好的方法是创建一个DTO,将您的数据序列化为JSON,以最好地满足消费者的需求。即使班级有相同的字段。随着项目的不断发展,越来越多的程序员开始使用代码,这样可以更好地进行维护。