0
我正在拍攝一個拍賣應用程序。目前我正在參與投標制度。我的拍賣模型包括:C#MVC實體框架不更新對象的列表屬性
public class Auctions
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
(...) some more fields like title, description etc(...)
public List<Bid> bids = new List<Bid>(); // a list of bids from the users
}
public class Bid
{
public string bidAuthor { get; set; }
public decimal bid { get; set; }
public DateTime bidDate { get; set; }
}
在視圖中,我有一個表格,用於發送的出價:
@model BiddingViewModel
(...)info stuff about the auction(...)
@using (Html.BeginForm("CreateBid", "Auction", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model=>model.auctionToSend.ID)
@Html.EditorFor(model => model.bid)
<input type="submit" value="Send a bid" />
}
然後,我的位指示:
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> CreateBid(BiddingViewModel bvm)
{
var user = await _userManager.FindByIdAsync(HttpContext.User.GetUserId());
var tmp = _context.Auctions.FirstOrDefault(i => i.ID == bvm.auctionToSend.ID);
Bid newBid = new Bid()
{
bid = decimal.Parse(bvm.bid.ToString()),
bidAuthor = user.Email,
bidDate = DateTime.Now
};
tmp.bids.Add(newBid);
_context.Entry(tmp).State = Microsoft.Data.Entity.EntityState.Modified;
_context.SaveChanges();
return RedirectToAction("AuctionList", "Auction");
}
不幸的是,這並未」 t似乎更新我的數據庫(VARBINARY(MAX)
類型)中的bids
列。我究竟做錯了什麼?
解釋沒有ü嘗試調試代碼?你有一些錯誤嗎? – Alexandr
您不需要將實體設置爲EntityState.Modified,EF將爲您執行此操作。 – DavidG
另外,你可以顯示你的模式?最後一句話似乎暗示「出價」是一列,而不是它自己的表格。這意味着你應該得到一些非常奇怪的錯誤。 – DavidG