我上課是這樣的:爲什麼我的通用列表始終爲空?
public class Lugar
{
[Key]
public int LugarId { get; set; }
public List<Review> Reviews { get; set; }
public int SumReviews { get; set; }
public double AverageReviews { get {
if (Reviews == null)
return 0;
else if (Reviews.Count == 0)
return 0;
else
return (double)SumReviews/(Reviews.Count); } }
}
而且在我的控制器我有這樣的:
[HttpPost, Authorize]
public ActionResult WriteReview(int id, FormCollection formCollection)
{
Lugar lugar = db.Lugares.Find(id);
Review review=new Review();
review.User = User.Identity.Name;
review.Rating=Convert.ToInt32(formCollection["Rating"]);
review.Texto = formCollection["Review"];
if (lugar != null)
{
if( lugar.Reviews==null)
lugar.Reviews=new List<Review>();
lugar.Reviews.Add(review);
lugar.SumReviews += review.Rating;
db.SaveChanges();
}
else
return RedirectToAction("Index");
return RedirectToAction("Index");
}
}
的問題是在該行:
如果(lugar.Reviews == NULL) lugar.Reviews = new List();
每次我執行我得到(lugar.Reviews == NULL)是真的.....
即使我已經加了審查那個地方,如果語句返回true .....
用'new'在這種情況下細,比標記列表爲'virtual'(用於延遲加載)更好地手動創建列表更好地控制這隻會導致不正當的數據庫查詢。您無需從數據庫加載整個列表以添加新的子項。 – Slauma
如果我每次創建新列表時都丟失了我的數據,我剛剛測試了 –
「*丟失我的數據*」是什麼意思?您是否意味着已經存儲在數據庫中的評論被刪除?這不可能發生在你的問題的代碼... – Slauma