DbContext.Set <t>()。SqlQuery和DbContext.Database.SqlQuery <t>返回不同的结果

时间:2018-08-10 16:13:13

标签: c# entity-framework dbcontext

SQL查询:

SELECT 0 AS Id,
       u.UserID AS UserId,
       u.first_name AS FirstName,
       u.last_name AS LastName,
       uf.uf_facility_id AS FacilityId
FROM ...

实体,无需其他映射,只需在DbContext中定义属性-公共DbSet<UserFacility> UserFacilities { get; set; }

public class UserFacility
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int FacilityId { get; set; }
}

DbContext.Set()。SqlQuery

返回UserFacility的列表,其中每个项目重复UserId,并且等于第一行的UserId值,例如:

Id  UserId  FirstName   LastName    FacilityId
0   33057   ggtest  2   3938
0   33057   QaAuOne TestOne 3938
0   33057   QaAuOne TestOne 3928

DbContext.Database.SqlQuery

返回预期结果(与在SSMS中运行此查询时得到的结果相同)。

Id  UserId  FirstName   LastName    FacilityId
0   33057   ggtest  2   3938
0   33098   QaAuOne TestOne 3938
0   33098   QaAuOne TestOne 3928

有人可以解释一下到底发生了什么,如何使DbContext.Set<T>().SqlQuery返回正确的数据吗?我正在使用EntityFramework 6.2.0。

谢谢。

0 个答案:

没有答案