忽略相关实体的财产

时间:2012-04-24 21:51:06

标签: c# entity-framework linq-to-entities

我首先使用EF 4.3.1代码从实体用户

加载数据
public class User
{
    public int Id { get; set; }
    public IList<UserFile> Files { get; set; }
}

以及文件

public class UserFile
{
    public int Id { get; set; }
    public User User { get; set; }
    public string Name { get; set; }
    public byte[] Data { get; set; }
}

使用代码

var users = Context.Users.Include(u => u.Files).ToList();

现在这样可行,但文件可能非常大。我想要做的是加载除实际Data属性之外的所有内容,以便可以有效地显示只有文件名的长列表用户。 有没有一些干净的方法来解决这个问题?

到目前为止,我最好的想法是引入另一个与{1}}相关的实体File,仅包含UserFile字段,其中Data位于Name }。我宁愿不添加另一个冗余表(来自DB PoV)只是为了使EF更容易加载...

1 个答案:

答案 0 :(得分:2)

一种方法是创建一个UserBasicFile实体,其中包含除数据之外的所有内容,然后使UserFile扩展UserBasicFile,并包含Data属性。这样,如果您的实用程序功能只需要UserBasicFile可能需要的基本信息,那么仍然可以为这些功能提供UserFile

请记住,为了拥有两种实体类型,您不一定要有两个表。