2015-04-01 45 views
-1

出於某種原因,我的代碼只是決定在構建完成後停止工作,而不確定問題是什麼。Linq to SQL在DataContext上轟炸

公共類clsSaveError {

public clsSendEmail.clsSendEmail SendEmail = new clsSendEmail.clsSendEmail(); 
    public clsSettings.clsSEttings Settings = new clsSettings.clsSEttings(); 
    public clsLinqToSQL.K12DataClassesDataContext dbContext = new clsLinqToSQL.K12DataClassesDataContext(); 


    public void InsertErrorIntoDatabase(string monsterID, string dbtable, string errormessage, string stacktrace, EventLog log) 
    { 
     clsLinqToSQL.K12DataClassesDataContext dbContext = new clsLinqToSQL.K12DataClassesDataContext(); 


      try 
      { 
       dbContext.tblErrors err = new dbContext.tblErrors(); 
       err.monsterid = monsterID; 
       err.dbtable = dbtable; 
       err.errormessage = errormessage; 
       err.stacktrace = stacktrace; 
       dbContext.tblErrors.Insertonsubmit(err); 
       dbContext.SubmitChanges(); 
      } 
      catch (Exception except) 
      { 
       //write the error to the event log 
       log.WriteEntry("ERROR! Unable to write error to database. Here are the details:" + "\n" + 
        "Exception Message: " + except.Message + "\n" + 
        "Exception Stacktrace: " + except.StackTrace + "\n" + 
        "Database Error Details: " + "\n" + 
        "Monster ID: " + monsterID + "\n" + 
        "Database Table: " + "\n" + 
        "Error Message: " + "\n" + 
        "Stacktrace: " + stacktrace); 

       SendEmail.SendEmail(Settings.mailport, Settings.mailhost, Settings.mailtimeout, Settings.mailusername, Settings.mailpassword, Settings.mailfrom, Settings.mailto, "Database Error - Unable to update Error Log", "Message: " + except.Message + "\n" + "Stacktrace: " + except.StackTrace); 
      } 
    } 

}

錯誤是:

'clsSaveError.clsSaveError.dbContext' 是 '場',而是用於像一個 '類型'

我知道這是一個通用的錯誤,但我不知道它爲什麼現在正在發生。感謝您的輸入!

+0

錯誤表示哪行代碼?您可能試圖通過使用類的實例的名稱而不是類本身來實例化類。 – 2015-04-01 00:44:00

+0

它正在創建表tblErrors的新實例,以便我可以將數據保存到數據庫中相應的表字段。它在將代碼合併到TFS並將其從TFS中取出後開始發生。該表存在於數據庫中。我已經重建了名爲clsSaveError的項目以及相應的clsLinqToSQL項目。我也嘗試重新連接到數據庫,並直接從數據庫中拉出新的表集,並且所有工作正常,但仍然發生錯誤。 – 2015-04-01 00:47:17

+0

錯誤在這裏: – 2015-04-01 00:49:59

回答

1

你在這裏聲明一個變量:

clsLinqToSQL.K12DataClassesDataContext dbContext = new clsLinqToSQL.K12DataClassesDataContext(); 

然後嘗試使用變量作爲一個類型在這裏:

dbContext.tblErrors err = new dbContext.tblErrors(); 

如果dbContext是一個類型的名字,不聲明變量由相同的名稱。如果它不是一個類型的名稱,那麼我不知道上面的代碼行試圖做什麼。

您的類型名稱和變量名稱完全違反C#約定,使代碼難以閱讀。例如:

public clsSendEmail.clsSendEmail SendEmail = new clsSendEmail.clsSendEmail(); 

您的類型名稱是小寫字母,而您的變量是大寫字母。這是從標準慣例落後的。每預加cls類型名稱不起作用。

+0

你知道我在努力完成什麼嗎?你會怎麼做呢?此代碼對於項目的其餘部分工作正常 - 相同的命名約定和所有。這是我剛纔遇到的問題。 – 2015-04-01 00:57:39

+0

@KyleDenney:它看起來像你要完成的是聲明一個名爲'err'的類型爲'dbContext.tblErrors'的變量。但是你已經在該範圍內有一個名爲'dbContext'的變量。這令編譯器感到困惑。不要將變量命名爲類型。您的命名約定很難區分變量和類型。因此你的困惑。 – David 2015-04-01 00:58:48

+0

我想引用LINQ to SQL表tblError。我知道這樣做的唯一方法是創建LINQ to SQL DataContext所在類的實例 - clsLinqToSQL - 該實例名稱爲dbContext。我還能怎麼做到這一點? – 2015-04-01 01:08:00

相關問題