我有這樣的方法在數據庫中添加:獲取ID的列表,並使用LINQ
public ActionResult Complete(int id)
{
// Validate customer owns this order
bool isValid = storeDB.Orders.Any(
o => o.OrderId == id &&
o.Username == User.Identity.Name);
bool CheckOrderValue = storeDB.Orders.Any(o => o.OrderId == id && o.Total == 0);
int musicaID = storeDB.OrderDetails.Where(o => o.OrderId == id).Select(o => o.MusicaId).FirstOrDefault();
if (isValid && CheckOrderValue)
{
int idUser = 0;
if (Request.IsAuthenticated)
{
var membership = (WebMatrix.WebData.SimpleMembershipProvider)Membership.Provider;
idUser = membership.GetUserId(User.Identity.Name);
}
var musicas = storeDB.Musicas.Where(x => x.MusicaId == musicaID)
.Select(x => new { x.Nome, x.NomeArtista, x.genero, x.path })
.ToList().First();
var y = new UsuarioMusica()
{
UserId = idUser,
MusicaId = musicaID,
GeneroId = musicas.genero.GeneroId,
genero = musicas.genero,
Nome = musicas.Nome,
NomeArtista = musicas.NomeArtista,
path = musicas.path
};
if (ModelState.IsValid)
{
storeDB.UsuarioMusicas.Add(y);
storeDB.SaveChanges();
}
return View(id);
}
else
{
return View("Error");
}
}
我想利用這條線的ID列表:
int musicaID = storeDB.OrderDetails.Where(o => o.OrderId == id)
.Select(o => o.MusicaId).FirstOrDefault();
並在此之後,我需要將每個ID添加到數據庫。
我認爲我需要做一個foreach
列表musicaID
,但我不知道如何通過每個ID添加到數據庫。
其實,這個方法是隻加入第一個元素,我知道爲什麼,是因爲FirstOrDefault
方法。
如何更改此項以添加多個ID?
您是否有隻包含ID列的表,或者您是否有需要添加到表中的ID的項? – Eckert
在表順序詳細信息中,有OrderDetailId,OrderId和MusicaId列,其中每個訂單可以有多個音樂,所以OrderDetail表做的是訂單和音樂表的關係,明白嗎? –
目前,如果訂單有兩個音樂添加,我只在數據庫中添加第一個音樂,而第二個音樂不添加。 –