无法使用linq表达式从数据库中获取数据

时间:2014-05-22 19:44:30

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

我想从我的数据库中获取所有用户名,以便当新用户想要注册时,我可以检查数据库中是否已存在用户名。我试图用这个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; }
}

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

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