2014-05-22 76 views
0

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

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

但是,当我debugg它Q变为“儿童无法评价”。 我不知道为什么我得到这个错误,所以我只是发布一些我认为可以处理的东西。

这是我如何定义_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; } 
} 

这里是用户配置模式:

[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

+0

你可以发布你正在得到的异常的堆栈跟踪(以及确切的异常消息和异常类型)吗? – Slauma

+0

我用你要求的数据给我的问题添加了一张图片:) –

+0

这是打算的行为:https://entityframework.codeplex.com/workitem/1995。它背后的原因与线程调试和防止副作用有关。 –

回答

0

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

+0

var q = from _db.User select t; foreach(var中的项目q){ var a = item; } 这给了我“循环没有任何结果”(翻译自瑞典语) –

+0

@DanielGustafsson:这条消息在哪里出现?在哪一行?这是一个例外吗? – Slauma

+0

该消息以与我原来的问题相同的方式出现,当我调试并在foreach循环中的q上方胡佛时 –