Името „вмъкнете име тук“ не съществува в текущия контекст

Не разбирам защо е "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();
                }
            }
        }

Не публикувах целия си код в контекста на данните, защото е дълъг.


person user962206    schedule 24.02.2012    source източник
comment
Декларирали ли сте променлива или поле с име dbo във вашия настоящ метод или клас? Защото грешката ви казва, че не сте.   -  person Anthony Pegram    schedule 24.02.2012
comment
Като този? DataClasses1DataContext myDbContext = нов DataClasses1DataContext(dbPath);   -  person user962206    schedule 24.02.2012
comment
Извън темата, но имам опасения, че може да съхранявате пароли като обикновен текст в базата данни. Това не е особено сигурно. Направете си услуга и проучете техники за безопасно съхранение.   -  person Anthony Pegram    schedule 24.02.2012
comment
@Anthony Pegram, нямам представа какви са тези техники, имаш ли нещо против да предложиш някоя?   -  person user962206    schedule 24.02.2012
comment
Често срещана техника е хеширане със соли, направете някои търсеня на тези термини в Google/StackOverflow. Има и доставчици на членство, които могат да свършат основната работа вместо вас в ASP.NET, например.   -  person Anthony Pegram    schedule 24.02.2012


Отговори (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
}
person Anthony Pegram    schedule 24.02.2012
comment
Глупаво, забравих dbContext ›.‹ Благодаря, момчета! - person user962206; 24.02.2012