我首先使用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更容易加载...
答案 0 :(得分:2)
一种方法是创建一个UserBasicFile
实体,其中包含除数据之外的所有内容,然后使UserFile
扩展UserBasicFile
,并包含Data
属性。这样,如果您的实用程序功能只需要UserBasicFile
可能需要的基本信息,那么仍然可以为这些功能提供UserFile
。
请记住,为了拥有两种实体类型,您不一定要有两个表。