我有很多棘手的问题。我有两个课程Character
和Weapon
。这两个有一个名为WeaponCharacter
的桥表,这是一个多对多的关系。
此时,A Character
可以拥有每种weapon
个Character
,但Weapons
不能拥有两个相同的 [HttpGet]
public ActionResult BuyWeapon(int weaponId)
{
string currentUserId = User.Identity.GetUserId();
var ctx = new DAL.ProjectStrawberryEntities();
Character character = ctx.Characters.FirstOrDefault(c => c.AccountId == currentUserId);
Weapon weapon = ctx.Weapons.FirstOrDefault(w => w.Id == weaponId);
if (character.Gold - weapon.Price >= 0)
{
character.Weapons.Add(weapon);
character.Gold -= (int)weapon.Price;
ctx.SaveChanges();
}
return RedirectToAction("Index", "Game");
}
。下面的图片描述了我想要做的事情。
上半部分是代码的当前状态,下面是我想要的代码,或类似的解决方案。
这是处理购买武器的交易的方法。
WeaponCharacter
我做了什么:
我确实在ICollections
中添加了一次数量,但Weapon
和Character
的{{1}}确实搞砸了。
可在此处阅读:ASP.net create many to many entity in C#
目标:
我希望角色能够拥有相同武器的多个副本。
答案 0 :(得分:1)
正如JamieD77在评论中提到的那样。
如果您删除数量列并且只有一个包含WeaponCharacterId(Key),WeaponId和CharacterId的表,并且只是继续插入相同的武器和角色ID,那么从长远来看,您可能会更好。这将使您可以灵活地为每个角色对同一武器进行不同的优化。