【问题标题】:C# NET Core EF data fetch from database and check the dataC# NET Core EF 从数据库中获取数据并检查数据
【发布时间】:2019-02-23 18:20:09
【问题描述】:

所以我试图联系 MySQL 数据库以检查玩家帐户是否存在,如果存在则获取该数据。但我不知道 MySQL 函数在 NET Core 中是如何工作的(使用 pomelo mysql)

到目前为止我有这个:

public PlayerData Account
    {
        get
        {
            using (var db = new DataDbContext())
            {
                return db.Players.Include(x => x.PlayerName == this.PlayerName).SingleOrDefault();
            }
        }
    }

但我不知道如何对此进行检查以查看该帐户是否存在,以及是否可以获取数据

PlayerData 类 PlayerData.cs

DataDbContext 类DataDbContext.cs

(添加了 github 链接,因为我无法将代码放在这里)

【问题讨论】:

  • 你有什么问题?如果它返回 default 对象,那么它不存在,否则它将返回一个带有填充数据的 PlayerData 对象。
  • .Include 不会像您认为的那样做。只需尝试db.Players.SingleOrDefault(x => x.PlayerName == this.PlayerName);。这将变成 SQL 中的 WHERE 子句。如果它返回null 或默认对象,则记录不存在。如果它返回记录,那么它会返回。顺便说一句,您的代码是标准实体框架代码,它根本不特定于 MySQL 数据库。找一个实体框架教程,它会变得容易得多。
  • "Include(x => x.PlayerName == this.PlayerName)" 不是mysql函数,它的实体框架。你可以考虑return db.Players.Where(x => x.PlayerName == this.PlayerName).SingleOrDefault()
  • 好的,谢谢大家。这看起来很奇怪,直到现在我只使用 SQL 命令和东西。这是新的,哈哈,我会看看关于实体框架的教程,我会解决这个问题

标签: c# entity-framework asp.net-core asp.net-core-2.0


【解决方案1】:

您可以稍微调整一下代码以使其正常工作

var player = db.Players.First(x => x.PlayerName == this.PlayerName);

if (player is null) {
    // Player does not exist
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多