2015-09-25 37 views
0

我有一個棘手的問題很多很多。我有兩個類CharacterWeapon。這兩個人有一張名爲WeaponCharacter的橋牌桌,這是一個多對多的關係。幾個角色可以有幾個相同的武器和幾個

enter image description here

在該時點,A Character可以擁有各自獨一無二的weapon,但Character不能擁有兩個相同的Weapons。下圖描述了我想如何做。

enter image description here

上部是代碼如何目前,和下面是我希望它是,或類似的溶液。

這是處理購買武器交易的方法。

[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添加量,但隨後ICollectionsWeaponCharacter自己都搞砸了。

這可以在這裏讀到:ASP.net create many to many entity in C#

目標:

我想一個角色能夠擁有相同的武器藏漢的多張複印件。

+0

正如Sean Lange所說,我希望角色能夠擁有同一武器的多個副本。在這種情況下有多少錯誤?只需製作一個庫存表就可以更容易一些,這個庫需要武器ID。 – Kokefa

+1

如果你刪除數量列並且只有一個帶有WeaponCharacterId(Key),WeaponId和CharacterId的表格,並且只是插入相同的武器和角色ID,你可能會更好。這會讓你靈活地爲每個字符 – JamieD77

+0

@ JamieD77對相同的武器進行不同的優化,聽起來容易得多。有時候,單獨參與某個項目往往會讓你的思維保持在框中。我會去解決這個問題。 – Kokefa

回答

1

由於JamieD77在評論中提到。

如果您刪除數量列,只是有WeaponCharacterId(密鑰),WeaponId和一個或CharacterId表,只是不停地插入相同的武器和人物的ID,你可能會從長遠來看更好。這會讓你靈活地對每個角色的同一武器進行不同的優化。