在EF中使用sql查询

mrd*_*mrd 8 c# entity-framework

我通过以下方式从数据库获取数据:

 result = (from d in context.FTDocuments
                          join f in context.FTDocFlags on d.ID equals f.DocID into fgrp
                          from x in fgrp.DefaultIfEmpty()
                          where d.LevelID == levelID && x.UserID == userID && d.Status.Equals(DocumentStatus.NEW)
                          select new Entities.Document
                          {
                              ArrivalDate = d.ArrivalDate.Value,
                              BundleReference = d.BundleRef,
                              CreatedDate = d.CreatedDate,
                              CustomerID = d.CustomerID,
                              DocType = d.DocType.Value,
                              GuidID = d.DocGuid,
                              ID = d.ID,
                              LastExportID = d.LastExpID,
                              LevelID = d.LevelID,
                              ProfileID = d.ProfileID,
                              ScanDate = d.ScanDate.Value,
                              ScanOperator = d.ScanOperator,
                              SenderEmail = d.SenderEmail,
                              Status = d.Status,
                              VerifyOperator = d.VerOperator,
                              FlagNo = x == null ? 0 : x.FlagNo,
                              FlagUserID = x == null ? 0 : x.UserID
                          }).ToList();
Run Code Online (Sandbox Code Playgroud)

现在,我试图通过使用SQL查询来实现这一点:

var test = context.Database.SqlQuery<string>("select *from FTDocument d left outer join FTDocFlag f on d.ID=f.DocID").ToList();
Run Code Online (Sandbox Code Playgroud)

但是得到以下错误:

数据阅读器有多个字段.多个字段对EDM原语或枚举类型无效

可以使用上面的复杂查询吗?

我使用EF 6.0.

apo*_*ene 5

您的查询不返回单个字符串.使用如下:

var test = context.Database.SqlQuery<Entities.Document>("...");
Run Code Online (Sandbox Code Playgroud)