Web.api获取方法以仅显示实体中的选定属性

时间:2012-12-12 15:38:05

标签: entity-framework entity-framework-4 asp.net-web-api

假设我有3个实体:Advert,User和UserRole。并在Web.Api项目中使用GetAllAdverts方法。

public IEnumerable<Advert> GetAllAdverts()
    {
        return repository.GetAll<Advert>();

    } 

当我输入url ../ api / advert 时,我会获得有关广告的所有广告和数据的JSON,但我也获得了有关用户和用户角色的所有数据。

我如何获得所有广告数据和仅UserName表单实体User?

这是通过创建DTO来完成的吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用DTO通常是个好主意。这是更多的工作,但它给你完全控制,它抽象出特定数据层的特殊性。

在您的情况下,如果您确实想要UserName,您甚至必须使用DTO,因为无法从User部分加载Advert作为导航属性{ {1}}。

如果除了导航属性(如角色)之外您看到User的所有属性并不重要,您还可以考虑(暂时)关闭存储库中的上下文的延迟加载并急切加载{ {1}}使用Advert.User