使用mvc4剃须刀连接到mysql数据库c#[错误]

问题描述:

嗨guyz我去了这个错误代码:执行命令定义时发生错误。详情请参阅内部例外。在搜索我的文字到数据库..使用mvc4剃须刀连接到mysql数据库c#[错误]

 private bool IsValidRegisterNewAcct(string acctname, string dispname, string email, string password) 
    { 
     var crypto = new SimpleCrypto.PBKDF2(); 
     bool IsValid = false; 
     IsValidErrorMessage = ""; 
     IsValidErrorMessageInt = 0; 
     string Newacctname = crypto.Compute(acctname.ToString()); 
     //try 
     //{ 
      using (var db = new MainDbContext()) 
      { 

       //db.Connection.Open(); 
       var user = db.user.FirstOrDefault(u => u.AcctNameSalt == Newacctname); 
       //var user = db.osoa_user.FirstOrDefault(u => u.Email == email); 

       if (user != null) 
       { 
        IsValid = false; 
        //db.Connection.Close(); 
        IsValidErrorMessage = "Account Name already Exist!"; 
       } 
       else 
       { 
        var InsertNewAcctName = db.osoa_user.CreateObject(); 

        InsertNewAcctName.UserId = Convert.ToString(Guid.NewGuid()); 
        InsertNewAcctName.AcctName = acctname; 
        InsertNewAcctName.AcctNameSalt = crypto.Compute(acctname); 
        InsertNewAcctName.DisplayName = dispname; 
        InsertNewAcctName.Email = email; 
        InsertNewAcctName.EmailSalt = crypto.Compute(email); 
        InsertNewAcctName.Password = crypto.Compute(password); 
        InsertNewAcctName.PasswordSalt = crypto.Salt; 
        InsertNewAcctName.UserLevel = 2; 

        db.user.AddObject(InsertNewAcctName); 

        db.SaveChanges(); 
        //db.Connection.Close(); 
        IsValid = true; 
       } 
      } 
     /* 
     } 
     catch (Exception e) 
     { 
      IsValidErrorMessageInt = 1; 
      IsValidErrorMessage = e.Message + ". Pls. contact your Administrator."; 
      IsValid = false; 
     } 
     */ 
     return IsValid; 

    } 

和错误是指向该代码:

var user = db.user.FirstOrDefault(u => u.AcctNameSalt == Newacctname); 

UPDATE关于内部异常。我不知道如果给你正确的..我试图用这个代码:

  try 
     { 
     } 
     catch (Exception e) 
     { 
      IsValidErrorMessageInt = 1; 
      IsValidErrorMessage = e.InnerException + ". Pls. contact your Administrator."; 
      IsValid = false; 
     } 

MySql.Data.MySqlClient.MySqlException(0X80004005):在“字段列表”未知列“Extent1.DateCreated” MySql.Data.MySqlClient.MySqlStream.ReadPacket()在MySql.Data.MySqlClient.NativeDriver.GetResult(的Int32 & affectedRow,Int64的& insertedId)在MySql.Data.MySqlClient.Driver.GetResult(的Int32 statementId,的Int32 & affectedRows,Int64的&在MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior行为)MySql.Data.MySqlClient.MySqlDataReader.NextResult()MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId,布尔强制)在在System.Data.Common.DbCommand.ExecuteReader(的CommandBehavior行为)在System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,的CommandBehavior行为)MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(的CommandBehavior行为)

+1

你看过内部的异常吗? – Kai 2013-04-28 11:27:39

+0

和内部例外说....? – rene 2013-04-28 11:27:53

从你的内部异常看起来好像你的MainDbContext已经变得与你的数据库不同步(看起来像Extent1有一个不存在于数据库中的列)。

尝试从模型中删除该属性并再次尝试。

+0

啊它的作品!天哪!感谢Kai和rene也..... wuhuuuuu ...所以我有检查我的数据库或我的表总是如果它是同步到我的MainDBContext?这个ASP.net MVC 4比php更棘手和更难..因为在PHP它不重要,如果你只会打几个字段...但现在我开始喜欢这个ASP.net mvc4剃须刀..非常感谢先生詹姆斯: )上帝保佑:) – user2328935 2013-04-28 12:00:08

+0

另一件事是真的可以放db.connection.open()并关闭?谢谢 – user2328935 2013-04-28 12:03:51

+0

可能发生的情况是,您在数据库中有一列,生成了您的上下文,然后从数据库中删除该列 - 导致上下文不同步。如果您将*列添加到您的数据库并且您的上下文不同步,那很好,因为这意味着该列无法更新。但是,删除上下文是不同的,因为上下文将查询属于它的模型的所有属性,以使它们**具有**在数据库中。 – James 2013-04-28 12:04:23