[英]Properties to Database Columns (C#, EF Core)
我在 WPF 中編寫了一個井字游戲,效果很好。 現在,我的任務是創建一個數據庫來保存每輪游戲的信息。
=> 所以數據庫列應該是這樣的
GameScoreId || 玩家 X || 玩家 O || 游戲模式 || 優勝者|| 失敗者|| 游戲狀態
我的 GameScore 類如下所示:
public class GameScores
{
private MainWindowViewModel? MainWindowViewModel = new MainWindowViewModel();
private TicTacToeLogic? Game => MainWindowViewModel!.CurrentGame;
public int? GameScoreId { get; set; }
public string PlayerX => Game!.PlayerX.Name;
public string PlayerO => Game!.PlayerO.Name;
public Enum Mode
{
get
{
var mode = Game!.PlayerO switch
{
HumanPlayer => GameMode.HumanVsHuman,
EasyCom => GameMode.HumanVsEasyBot,
HardCom => GameMode.HumanVsHardBot,
_ => throw new NotImplementedException(),
};
return mode;
}
}
public string? Winner
{
get
{
if (Game!.GameOver && Game.GetFreeFields().Count is not 0)
return Game.CurrentPlayer!.Name;
return null;
}
}
public string? Loser
{
get
{
if (Game!.GameOver && Game.GetFreeFields().Count is not 0)
return Game.CurrentPlayer!.Enemy!.Name;
return null;
}
}
public Enum Status
{
get
{
if (Game!.GameOver && Game.GetFreeFields().Count is not 0)
{
return GameStatus.Win;
}
return GameStatus.Draw;
}
}
}
我的上下文類看起來像這樣:
public class GameScoresContext : DbContext
{
// table with gamescores
public DbSet<GameScores>? GameScores { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Data Source=localhost;Initial Catalog=GameScoresDB;Integrated Security=True");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<GameScores>().HasKey(e => e.GameScoreId);
}
}
}
在 NuGet 數據包管理器控制台上添加遷移和更新數據庫后,它會在我的服務器上創建一個表,如下所示:
為什么不將屬性(GameScores 類)作為列添加到數據庫中? 或者如何將屬性作為列添加到我的數據庫中?
干杯!
屬性也需要映射
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<GameScores>().HasKey(e => e.GameScoreId);
modelBuilder.Entity<GameScores>().Property(e => e.PlayerX);
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.