当我尝试将对象添加到数据库时,我遇到了一个稍微有点异常的异常。我的控制器中的代码如下所示:
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在幕后制作数据库架构......但实际上我不知道多元化以及为什么我会得到这个错误。