我正在使用具有类似
结构的EF核心将一些文件保存到MSSQL数据库中public class UploadedFile
{
public int Id { get; set; }
public string Source { get; set; }
public byte[] Content { get; set; }
我希望能够从数据库加载“UploadedFiles”列表,而无需实际从数据库中读取Content列。所以我不能真正使用
await _context.UploadedFiles.ToListAsync();
我相信我可以使用类似于存储过程的bellow。
_context.Set<UploadedFiles>().FromSql("dbo.spGetUploadedFiles")
但是,有没有其他方法不涉及使用存储过程?我无法取消映射模型中的列,因为我需要它来插入/读取单个项目。 谢谢。
答案 0 :(得分:2)
使用投影:
var results = _context.UploadedFiles.Select(uf => new { uf.Id, uf.Source });
答案 1 :(得分:2)
您基本上可以使用.Select({..)
指定要返回的列:
public class MyItem
{
public int Id { get; set; }
public string Source { get; set; }
}
var data = _context.UploadedFiles
.Select(p => new MyItem
{
Id = p.Id,
Source = p.Source
})
.ToListAsync();
通过这种方式,您可以告诉EF仅为这些列生成选择,仅此而已。如果您愿意,也可以选择.Select(p => new { ... })
之类的匿名对象。
我强烈建议使用强类型。