c# - SQL Server 查询并转换为 Linq
问题描述
我确实有 4 张桌子:
Entity (EntityId (PK),Name),
MultimediaEntity(IdMultimediaEntity (PK), EntityId (FK), FileId(FK), Principal),
File ( FileId(PK),Name),
BinaryFile(FileId, Binary,FileGuid)
我需要使用 Linq 检索某个文件的二进制文件,但该文件必须与我在方法 public ActionResult GetEntityFileById(int?EntityId) 中收到的 EntityId 匹配。
select BinaryFile.Binary
from File
inner join BinaryFile on BinaryFile.FileId=File.FileId
select MultimediaEntity.FileId
from File
inner join Entity on Entity.EntityId=MultimediaEntity.EntityId
我知道我需要 2 个内部连接,但我怎样才能检索到我想要的结果?
编辑:需要做一个内部连接来检索我的模型的二进制属性,有什么帮助吗?
public ActionResult GetEntityFileById(int? EntityId)
{
RecursosSearch getEntityById = (from e in db.Entity
join
t in db.EntityType on e.EntityId equals t.EntityId join
m in db.MultimediaEntity on e.EntityId equals m.EntityId
where t.EntityTypeId == 2301 && e.PublishedOnInternet && e.EntityId==EntityId
orderby e.Name
select new RecursosSearch
{
Name = e.Name,
Biography=e.Biography,
Binary=(from m in db.MultimediaEntity
join
e in db.Entity on e.EntityId equals m.EntityId
join
f in db.File on m.FileId equals f.FileId
}).FirstOrDefault();
这是我的模型:
public class RecursosSearch
{
public int EntityId { get; set; }
public string Name { get; set; }
public string Biography { get; set; }
public byte[] Binary { get; set; }
}
解决方案
假设您有一个带有导航属性的 EF 模型,并且您只想要与 EntityId 关联的第一个文件,则如下所示:
var q = db.MultimediaEntity
.Where(e => e.EntityId == EntityId)
.Select( e => e.File.BinaryFile.Binary );
byte[] fileContents = q.FirstOrDefault();
或者
var q = from e in db.MultimediaEntity
where e.EntityId == EntityId
select e.File.BinaryFile.Binary;
byte[] fileContents = q.FirstOrDefault();
推荐阅读
- pandas - 用 pandas 列中现有最大值和最小值之间的随机值替换 nan
- javascript - 如何检测 Safari 扩展中的历史状态变化?
- aws-java-sdk - java localstack lambada - 如何运行 lambada 并查看日志
- python - 层顺序的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 8,但接收到的输入具有形状(无,71)
- node.js - 限制特定页面的车把部分
- javascript - 将 react-bootstrap 复选框设置为取消选中状态
- javascript - 如何创建进度条的可点击进度条增量和减量值 20%
- camera - 以低比特率和 H264/H265 编解码器录制 4k/25fps 视频流的最佳硬件/软件?
- javascript - 给定年份的给定月份的天数
- firebase - 如何跨具有部分相同结果集的不同查询计算读取计数?