C# 基于MVC actionresult(实体框架)更新关系数据库数据
我正在尝试更新数据库中的一个表,以根据用户选择的卡片更改特定关系,然后单击按钮将该卡片发送到该卡片组,请参见以下内容: 我的模型:C# 基于MVC actionresult(实体框架)更新关系数据库数据,c#,sql,.net,entity-framework,C#,Sql,.net,Entity Framework,我正在尝试更新数据库中的一个表,以根据用户选择的卡片更改特定关系,然后单击按钮将该卡片发送到该卡片组,请参见以下内容: 我的模型: public class Card { public int Id { get; set; } public string Name { get; set; } public int? Atk { get; set; } public int? Def { get; set; } public string Desc {get
public class Card
{
public int Id { get; set; }
public string Name { get; set; }
public int? Atk { get; set; }
public int? Def { get; set; }
public string Desc {get; set;}
public int? Level { get; set; }
public string Type { get; set; }
public string Attribute { get; set; }
[DisplayName("Image")]
public virtual List<Image> Card_Images { get; set; }
public virtual List<Deck> Deck { get; set; }
}
public class Deck
{
public int id { get; set; }
public string Name { get; set; }
public string Notes { get; set; }
[DisplayName("Card")]
public virtual List<Card> Card { get; set; }
}
我的看法是:
@using YGOBuilder.Controllers
@model YGOBuilder.Models.Card
<div>
<h4>Card</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Name)
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Atk)
</dt>
<dd>
@Html.DisplayFor(model => model.Atk)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Def)
</dt>
<dd>
@Html.DisplayFor(model => model.Def)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Desc)
</dt>
<dd>
@Html.DisplayFor(model => model.Desc)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Level)
</dt>
<dd>
@Html.DisplayFor(model => model.Level)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Type)
</dt>
<dd>
@Html.DisplayFor(model => model.Type)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Attribute)
</dt>
<dd>
@Html.DisplayFor(model => model.Attribute)
</dd>
@foreach (var item in Model.Card_Images)
{
<td>
<img src=@item.image_url height="300" width="200" style="margin: 2px">
</td>
}
</dl>
</div>
<p>
@Html.ActionLink("Back to List", "Index")
</p>
我想在上面的视图中显示所有当前甲板的列表,我需要为此创建一个viewModel吗
此外,当用户查看id为1的卡时,他们希望更新DeckCards表以将该卡与id为3的卡组配对,例如
Deck_Id Card_Id
3 1
我认为你的控制者行动将使牌组中的所有牌都相同。您具有以下功能:
foreach (var c in cardInDb.Deck)
{
cardInDb.Id = deckInDb.id;
}
相反,请尝试:
deckInDb.Card.Add(cardInDb);
cardInDb.Deck.Add(deckInDb);
除非我误解了您的目标,否则当您调用SaveChanges()时,数据库应该得到相应的更新。这是关系映射,需要更改,因此在DeckCards中,表Card_Id映射到Deck_Id
foreach (var c in cardInDb.Deck)
{
cardInDb.Id = deckInDb.id;
}
deckInDb.Card.Add(cardInDb);
cardInDb.Deck.Add(deckInDb);