【发布时间】:2015-07-26 06:29:42
【问题描述】:
我有这个方法:
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 添加到数据库中。
我认为我需要用列表musicaID 创建一个foreach,但我不知道如何传递每个 ID 以添加到数据库中。
其实这个方法只是添加第一个元素,我知道为什么,是因为FirstOrDefault方法。
如何更改此设置以添加多个 ID?
【问题讨论】:
-
您是否有一个只包含 ID 列的表格,或者您是否有需要添加到表格中的带有 ID 的项目?
-
orderDetails表中,有OrderDetailId、OrderId和MusicaId列,其中每个订单可以有多个音乐,所以OrderDetail表做了order和music表的关系,明白吗?
-
目前,如果一个订单添加了两首音乐,我只是在数据库中添加第一首音乐,第二首不添加。
标签: c# asp.net-mvc database linq entity-framework