【发布时间】:2020-07-27 07:46:14
【问题描述】:
我有一个 .NetCore 3 Entity Framework 控制器,它返回如下对象:
var games = await _context.Game
.Select(x => new GameEntity
{
Id = x.Id,
Title = x.Title,
GameCharacterClasses = x.GameCharacterClasses
}).ToListAsync();
GameEntity 类如下所示:
public partial class GameEntity
{
public GameEntity()
{
GameCharacterClasses = new HashSet<GameCharacterClasses>();
}
public long Id { get; set; }
public string Title { get; set; }
public virtual ICollection<GameCharacterClasses> GameCharacterClasses { get; set; }
}
GameCharacterClasses 是一个数组,其中包含游戏的 Id 和角色类的 Id。
问题是,我真的需要 characterClass 名称,而不是游戏或 characterClass 的 Id。
有没有办法制作基于代码的表或变量,以便我可以根据 Id 查找所需的字符类名称?
例如,如果 GameCharacterClasses 数组包含 Ids(GameId, CharacterClassId)
[(5, 1), (5, 4), (5, 7)]
那么数组应该包含
'Wizard', 'Fighter', 'Cleric'?
我尝试使用复杂的 if/then 树,但它失控了。
如果可能的话,我想要某种类型的基于查找的变量...比如:
0 : Thief
1 : Wizard
2 : Paladin
3 : Assassin
etc...
有没有办法在 c# 中做到这一点?
谢谢!
【问题讨论】:
-
一个
enum,一个静态Dictionary<int, string>...这取决于你的用例 -
我喜欢用this approach 来做类似的事情
-
为什么不引入
CharacterClass类+表? -
@GertArnold 你是什么意思?对不起,我很困惑:)
-
所以
CharacterClassId是CharacterClass由Id + Name 组成的记录的外键。您将在Game和CharacterClass之间建立多对多关系。
标签: c# asp.net-core entity-framework-core asp.net-core-3.0