返回IQueryable避免返回ICollection

时间:2014-05-09 01:15:38

标签: entity-framework asp.net-mvc-4

我正在编写一个返回一些数据的mvc4服务。我怎样才能避免从表中返回ICollection。 它会产生不必要的过载。在这些示例中,我只想让UserIdUsername避免UserInfos

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string Username { get; set; }

    public virtual ICollection<UserInfo> UserInfos { get; set; }
}

MVC4 API

    [HttpPost]
    [Authorize(Roles = "administrator")]
    public IQueryable GetUsers()
    {
        var items = _uow.Users.DbSet.Where(x => x.Username == "FirstUser");
        return items;
    }

1 个答案:

答案 0 :(得分:2)

如果您使用EF,则应禁用延迟加载模式(默认设置为true)(在db上下文Configuration.LazyLoadingEnabled = false;中)。除非您明确要求使用Include()

,否则这将有助于防止加载UserInfo

您不应该因为避免UserInfo被加载而返回IQueryable。