2014-05-22 100 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上方胡佛時 –