錯誤:傳遞到字典中的模型項是類型'System.Data.Entity.Infrastructure.DbQuery(snip)...尋找類型'Advocate 「MVC4 linq查詢到對象不會作爲正確的對象出來
控制器的方法是這樣的:
[HttpGet]
public ActionResult AdvocateEdit(int id)
{
var advocate = from a in db.Query<Advocate>().Include(a => a.AdvocateId)
where (a.AdvocateId == id)
select a;
return View(advocate);
}
的觀點確實輸入到倡導@model和步進通過後,我敢肯定,問題是這樣的查詢。它返回時需要是Advocate類型的。
db.Query is an IQueryable<T> method in my DbContext that returns Set<T>().
讓我知道是否需要更多信息。由於人們
ADDED ----
DbContext.cs
public interface IAcmeDb : IDisposable
{
IQueryable<T> Query<T>() where T : class;
}
public class AcmeDb : DbContext, IAcmeDb
{
public AcmeDb() : base("name=AcmeDB") {}
public DbSet<Advocate> Advocates { get; set; }
IQueryable<T> IAcmeDb.Query<T>()
{
return Set<T>();
}
}
起初我只是用db.Advocates.Find(ID)和剛工作很好,但我不得不去看看並設置一個數據庫接口,以便我可以對假數據庫進行單元測試。應該可能只是切換一切,所以我可以繼續前進 –
但是你的代碼仍然是Advocate的集合而不是Advocate,所以它不會修復錯誤。另外,即使視圖確實需要一個集合,通常也不需要在控制器中實現查詢。如果視圖需要實體,它將枚舉查詢。如果它不需要它們,那麼在控制器中執行查詢是很浪費的。也許該視圖將應用進一步的過濾器或其他東西,在這種情況下,您的方法將獲得超過必要的實體數量, –
@MikeGoodwin好點。我忽視了他的觀點是尋找一個單身人士的事實。 – evanmcdonnal