此代碼拋出時rawVoters.Count()被調用的異常:EF核心FromSql返回奇數錯誤消息
string sql = @"select * from Voters as v
inner join Homes as h on v.HomeID = h.ID
inner join Locations as l on h.LocationID = l.ID
inner join Streets as s on l.StreetID = s.ID
inner join Cities as c on s.CityID = c.ID
inner join VoterAgencies as va on v.CountyID = va.CountyID and v.VoterID = va.VoterID
where (va.AgencyID = @agencyID)
and (c.Name like '%' + @city + '%')
and (v.FirstName like '%' + @firstName + '%')
and (v.LastName like '%' + @lastName + '%')
and (s.Name like '%' + @street + '%')
and ((@voterID = 0) or (v.VoterID = @voterID))";
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@agencyID", agencyID));
parameters.Add(new SqlParameter("@city", model.City));
parameters.Add(new SqlParameter("@firstName", model.FirstName));
parameters.Add(new SqlParameter("@lastName", model.LastName));
parameters.Add(new SqlParameter("@street", model.Street));
parameters.Add(new SqlParameter("@voterID", model.VoterID));
IQueryable<Voter> rawVoters = _context.Voters
.AsNoTracking()
.FromSql(sql, parameters.ToArray());
int numVoters = 0;
try
{
numVoters = rawVoters.Count();
}
catch(Exception e)
{
int i = 9;
i++;
}
的錯誤信息是:
「被指定的列 'ID' 'v'多次。「
我想這可能是因爲EF Core不喜歡「as x」的措辭,所以我用每個標識符替換了表名...並得到了相同的錯誤信息。
我很好奇這裏發生了什麼。
Thanx,Sampath,但我不認爲這是正確的。首先,Voter(as v)表中沒有任何ID字段。 但是你的建議讓我意識到了一些事情:我做了一個「select *」......它與內部聯接將會遠遠超過選民字段。將其更改爲「select v。*」允許執行查詢,並運行Count()。 –
是現在工作還是什麼? – Sampath