我正在尝试使用LINQ,特别是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,或者我是否需要做一些额外的事情才能实现这一点?
答案 0 :(得分:10)
尝试将User
更改为dc.User
:
var user = from u in dc.User
where u.UserName == usn
select u;
User
是属性System.Web.UI.Page.User。
答案 1 :(得分:7)
尝试
var user = from u in dc.User
where u.UserName == usn
select u;
答案 2 :(得分:2)
你不应该使用你在查询中创建的DC吗?
类似的东西:
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;
}
}
答案 3 :(得分:2)
您的查询表达式应该使用dc.User,而不仅仅是User:
DataClassesDataContext dc = new DataClassesDataContext();
var user = from u in dc.User
where u.UserName == usn
select u;
如果您打开了复数,则可能是dc.Users。
答案 4 :(得分:0)
您所指的用户(当您不使用dc.User时)是Page.User成员。这就是intellisense不抱怨的原因。