【问题标题】:The Name 'insert name here' does not exist in the current context当前上下文中不存在名称“在此处插入名称”
【发布时间】:2012-02-24 04:39:00
【问题描述】:

我不明白为什么这个查询中的“dbo”

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

显示此错误

“名称'dbo'在当前上下文中不存在”

但是当我删除“dbo”这个词时,它会显示这个错误

名称帐户在当前上下文中不存在。

这是我的桌子

在我的 DataClasssesContext 我有这个

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

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _accnt_ID;

        private string _accnt_User;

        private string _accnt_Pass;

        private string _accnt_Position;

    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void Onaccnt_IDChanging(int value);
    partial void Onaccnt_IDChanged();
    partial void Onaccnt_UserChanging(string value);
    partial void Onaccnt_UserChanged();
    partial void Onaccnt_PassChanging(string value);
    partial void Onaccnt_PassChanged();
    partial void Onaccnt_PositionChanging(string value);
    partial void Onaccnt_PositionChanged();
    #endregion

        public Account()
        {
            OnCreated();
        }

        [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_accnt_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
        public int accnt_ID
        {
            get
            {
                return this._accnt_ID;
            }
            set
            {
                if ((this._accnt_ID != value))
                {
                    this.Onaccnt_IDChanging(value);
                    this.SendPropertyChanging();
                    this._accnt_ID = value;
                    this.SendPropertyChanged("accnt_ID");
                    this.Onaccnt_IDChanged();
                }
            }
        }

我没有在数据上下文中发布我的所有代码,因为它很长。

【问题讨论】:

  • 您是否在当前方法或类中声明了一个名为dbo 的变量或字段?因为错误告诉你你没有。
  • 喜欢这个? DataClasses1DataContext myDbContext = new DataClasses1DataContext(dbPath);
  • 离题,但我担心您可能会将密码作为纯文本存储在数据库中。这不是特别安全。帮自己一个忙,研究安全存储技术。
  • @Anthony Pegram,我不知道你介意推荐哪些技术?
  • 一种常用的技术是使用盐进行散列,在这些条件下做一些 Google/StackOverflow searches。例如,还有 membership providers 可以在 ASP.NET 中为您完成繁重的工作。

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


【解决方案1】:

该错误准确地告诉您您需要知道的内容,即名称 dbo 不存在。在该行代码中不存在可访问的变量、字段或静态类,因此编译器会告诉您该名称在当前上下文中不存在。

例如,给定这个类和方法定义

class Foo
{
    public void Frob()
    {
        Console.WriteLine(bar); // bar does not exist!
    }
}

bar 既不引用局部变量也不引用类字段,并且会导致与您观察到的相同的错误。

关于您的具体代码,您对问题的评论表明您有一个 DataClasses1DataContext 类的实例。这很可能是您需要在查询中使用的内容。

using (var myDbContext = new DataClasses1DataContext())
{
    var query = from user in myDbContext.Accounts
                where user.Blah == whatever
                select user;

     // use query results
}

【讨论】:

  • 愚蠢的我忘记了 dbContext >。
猜你喜欢
  • 1970-01-01
  • 2013-10-02
  • 2014-04-22
  • 2017-06-17
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
相关资源
最近更新 更多