2008-10-15 47 views
0

我想開始使用LINQ和專門的LINQ to SQL,但我有一些困難LINQ to SQL的錯誤信息:「凡」未找到

我已經SqlMetal嘗試這樣做,現在使用數據庫在Visual Studio中的表設計器和我不斷收到類似的錯誤,就像在這段代碼中一樣,使用我在VS2008中使用數據庫佈局設計器創建的數據上下文。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     string usn = UserNameBox.Text; 
     string pss = PassBox.Text; 

     if (usn == "" || pss == "") 
      return; 

     DataClassesDataContext dc = new DataClassesDataContext(); 
     var user = from u in User 
        where u.UserName == usn 
        select u; 

    } 
} 
} 

我就得到一個錯誤的說法:找不到源類型「System.Security.Principal.IPrincipal」的查詢模式的實現。還有:'哪裏找不到'。

當我嘗試使用SqlMetal的結果時,我有類似的東西。我刪除了該源,並開始使用設計器。我一定在這裏錯過了一些東西,但我無法弄清楚什麼。在使用LINQ to SQL之前,表不應該實現我需要的內容嗎?還是需要額外做些事情才能實現?

回答

7

嘗試

var user = from u in dc.User 
        where u.UserName == usn 
        select u; 
+0

工作。出於某種原因,我沒有考慮在那裏引用dc。謝謝。 – 2008-10-15 13:08:53

2

難道你不應該使用你在你的查詢中創建的直流?

喜歡的東西:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
    string usn = UserNameBox.Text; 
    string pss = PassBox.Text; 
    if (usn == "" || pss == "")    
     return; 
    DataClassesDataContext dc = new DataClassesDataContext(); 
    var user = from u in dc.User where u.UserName == usn select u; 
    } 
} 
+0

好點。嗯,我試圖遵循我在網上找到的例子,但是我必須錯過放入var中數據上下文的地方。 – 2008-10-15 13:07:42

10

嘗試改變Userdc.User

var user = from u in dc.User 
        where u.UserName == usn 
        select u; 

User是財產System.Web.UI.Page.User

2

查詢表達式應該使用dc.User,而不僅僅是用戶:

DataClassesDataContext dc = new DataClassesDataContext(); 
var user = from u in dc.User 
      where u.UserName == usn 
      select u; 

如果你有名字的複數開啓,也可能是dc.Users代替。

0

您所指的用戶(當您不使用dc.User時)是Page.User成員。這就是爲什麼intellisense不抱怨。