【问题标题】:Can't get data from database with linq expression无法使用 linq 表达式从数据库中获取数据
【发布时间】:2014-05-22 19:44:30
【问题描述】:

我想从我的数据库中获取所有用户名,这样当一个新用户想要注册时,我可以检查该用户名是否已经存在于数据库中。我试图用这个 linq 表达式来做到这一点:

[AllowAnonymous]
public ActionResult Register()
{
    var q = from t in _db.User
            select t;
    return View();
}

但是当我调试它 q 变成“无法评估儿童”。 我不知道为什么会出现这个错误,所以我只是发布了一些我认为可能与之相关的内容。

这就是我在 Register 方法之上定义 _db 的方式:

FantasySport _db = new FantasySport();

这里是 Fantasysport 数据库模型:

public class FantasySport : DbContext
{
    public DbSet<UserProfile> User { get; set; }
    public DbSet<Team> Team { get; set; }
    public DbSet<TeamPlayer> TeamPlayer { get; set; }
    public DbSet<Player> Player { get; set; }
    public DbSet<Games> Games { get; set; }
    public DbSet<League> League { get; set; }
}

这是 UserProfile 模型:

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }
    public string Country { get; set; }
    public string City { get; set; }
    public int Birthdate { get; set; }
    public ICollection<Team> teams { get; set; }
}

【问题讨论】:

  • 你能发布你得到的异常的堆栈跟踪(以及确切的异常消息和异常类型)吗?
  • 我用您要求的数据在我的问题中添加了一张图片:)
  • 这是预期行为:entityframework.codeplex.com/workitem/1995。其背后的原因与线程和通过调试防止副作用有关。

标签: c# linq entity-framework ef-code-first


【解决方案1】:

在 Visual Studio 调试器中扩展 EF 查询结果时,显然是 some complicated internal issue 和 EF 6。但是,如果您仅枚举结果 (foreach (var item in q) { /* watch item in debugger */ }) 或在代码中调用任何执行运算符(如 var result = q.ToList();),它将起作用。

【讨论】:

  • var q = from t in _db.User select t; foreach (q中的var item) { var a = item;这给了我“循环没有任何结果”(翻译自瑞典语)
  • @DanielGustafsson:这条消息出现在哪里?在哪一行?是例外吗?
  • 当我在 foreach 循环中调试并悬停在 q 上方时,该消息的出现方式与我原来的问题相同
  • @DanielGustafsson:如果您在var a = item; 行设置断点,您的代码不会在该行停止吗?如果确实如此,a 是您数据库中的用户,您应该能够在调试器中检查 a。
  • @DanielGustafsson:通常只能表示该表是空的。也许您的连接字符串没有指向正确的数据库? var result = q.ToList() 是否包含任何条目还是一个空列表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2020-02-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2017-09-21
相关资源
最近更新 更多