在当前上下文中不存在

时间:2012-02-24 03:56:50

标签: c# linq linq-to-sql datacontext

为什么我的代码行显示错误

 var searchUser = from accnt_user in dbo.Accounts
                             where accnt_user == txtUser.Text && 
                             accnt_Pass == txtPassword.Text
                             select accnt_user;
  

错误2当前上下文中不存在名称“accnt_Pass”C:\ Users \ John \ documents \ visual studio 2010 \ Projects \ PAS \ PAS \ Login.cs 39 66 PAS

     

错误1当前上下文中不存在名称“dbo”C:\ Users \ John \ documents \ visual studio 2010 \ Projects \ PAS \ PAS \ Login.cs 38 49 PAS

但我已将我的datacontext链接到它

DataClasses1DataContext myDbContext = new DataClasses1DataContext(dbPath);

我的DataClasses1DataContext已经有了这行代码

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Accounts")]
    public partial class Account : INotifyPropertyChanging, INotifyPropertyChanged

注意:我没有在datacontext中添加所有代码,因为它很长

enter image description here

2 个答案:

答案 0 :(得分:2)

尝试这样,因为accnt_user这将是Accounts的对象,因此您需要使用. operatorr

访问其所有成员
var searchUser = from accnt_user in Accounts
                             where accnt_user.accnt_user== txtUser.Text && 
                             accnt_user.accnt_pass== txtPassword.Text
                             select accnt_user;

答案 1 :(得分:0)

您没有在查询中使用上下文。此外,所有列名必须以为源表或连接定义的别名作为前缀(与SQL不同,如果列在查询中的一组表或视图中是唯一的,则可以省略前缀。)

将您的代码更改为:

using(DataClasses1DataContext myDbContext = new DataClasses1DataContext(dbPath))
{
    var searchUser = from user in myDbContext.Accounts
                     where user.accnt_user == txtUser.Text && 
                     user.accnt_Pass == txtPassword.Text
                     select user;

    // do something with searchUser
}

这基本上等同于这个SQL:

select user.*

from dbo.Accounts user

where user.accnt_user = @user and user.accnt_pass = @pass