2015-04-01 61 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