db.SaveChanges()内部异常可能的bug

时间:2017-03-09 15:52:55

标签: c# mysql asp.net linq

当我尝试将对象添加到数据库时,我遇到了一个稍微有点异常的异常。我的控制器中的代码如下所示:

var user = db.UserActivation.Create();
user.UserId = Id
user.ActivationCode = activationCode;
db.UserActivation.Add(user);
db.SaveChanges();

此外,我的模型看起来像这样:

public class UserActivation
{
    [Key]
    public int Id { get; set; }
    public int UserId { get; set; }
    public string ActivationCode { get; set; }
}

和一个看起来像这样的MySqlContext:

public class MySqlContext : DbContext
{
    public MySqlContext() : base("MySql")
    {
        //this.Configuration.LazyLoadingEnabled = false;
    }
    public DbSet<Users> Users { get; set; }
    public DbSet<UserActivation> UserActivation { get; set; }
}

在我的错误中,我可以在内部异常中看到,它选择了错误的数据库,它说:

[MySql.Data.MySqlClient.MySqlException {"Table 'bkrt_dk_db.UserActivations' doesn't exist"}

这绝对没有意义,因为我在我的模型,上下文和控制器中都特别称它为UserActivation而不是UserActivations

这是我的堆栈跟踪:

at System.Data.Entity.Internal.InternalContext.SaveChanges()
at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()
at System.Data.Entity.DbContext.SaveChanges()
at Learning.Controllers.AuthController.emailConirmation(String email, String name) in c:\Users\Projects\Learning\Learning\Controllers\AuthController.cs:line 146
at Learning.Controllers.AuthController.<>c__DisplayClass4.<Registration>b__2() in c:\Users\Projects\Learning\Learning\Controllers\AuthController.cs:line 107
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.Execute()

我可以看到其他人已经声明它与多元化有关,而EF在幕后制作数据库架构......但实际上我不知道多元化以及为什么我会得到这个错误。

0 个答案:

没有答案