c# - 我可以查询 mysql DB 但无法保存对其的更改

标签 c# mysql .net visual-studio

我使用 Visual Studio 2015 和 SQLServer 数据库创建了一个系统,我可以查询数据库但不能保存对其的更改。所以我在 Visual Studio 中创建了数据库。我现在尝试在 MySQL Workbench 中创建数据库并遇到同样的问题。我切换到mysql,因为我不确定我是否正确安装了My SQL Server,我肯定已经正确安装了mysql,因为我在Java项目中使用了它。 我使用代码优先技术创建了数据库,效果很好。有任何想法吗? 应用程序设置中的连接字符串

"DataAccessMySqlProvider": "server=localhost;port=3306;database=rentalsdb;userid=root;password=******"

在 Startup.cs 中

            var sqlConnectionString = Configuration.GetConnectionString("DataAccessMySqlProvider");
        services.AddMvc();
        services.AddDbContext<RentalsDbContext>(options =>
    options.UseMySQL(
        sqlConnectionString,
        b => b.MigrationsAssembly("RentalsRated.Web")));

        services.AddDbServiceDependencies(sqlConnectionString);

然后在我的仓库中

 public bool CreateUser(UserAccount user)
    {
        if (user != null)
        {
            try
            {
                _Context.UserAccounts.Add(user);

                _Context.Entry(user).State = EntityState.Modified;
                _Context.SaveChanges();
                return true;
            }
            catch ....

我可以看到这里有正确的变量。这一切都与 Visual Studios 服务器资源管理器中的数据库配合良好。 谢谢!

IndexOutOfRangeException:索引超出数组范围。

堆栈跟踪:位于 Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection 连接) 在 Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(Tuple2 参数) 在 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IReadOnlyList1 个条目ToSave)...

更新:当我注释掉作为 Byte[] 传递的数据时有效。

最佳答案

根本原因: 密码和盐字段定义为 blob。将密码和盐字段的类型更改为字符串类型之一。

屏蔽问题: 您在将实体添加到表后立即将其状态更改为“已修改”,这可能会破坏上下文的内部状态。

MSDN 建议使用两种不同的方式将新实体添加到上下文中 https://msdn.microsoft.com/en-us/library/jj592676(v=vs.113).aspx

1) 通过将实体直接添加到表中。

using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Blogs.Add(blog); 
    context.SaveChanges(); 
}

2) 通过将实体的状态更改为已添加

using (var context = new BloggingContext()) 
{ 
    var blog = new Blog { Name = "ADO.NET Blog" }; 
    context.Entry(blog).State = EntityState.Added; 
    context.SaveChanges(); 
}

关于c# - 我可以查询 mysql DB 但无法保存对其的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43375062/

相关文章:

PHP Mysql单选按钮选择

c# - 用于 .NET 的 Python

c# - MEF 和 MVVM - 添加约定的方式?

c# - 通过代码向hadoop作业提供输入

c# - 事件驱动异步 WCF 服务调用中的异常处理

c# - 如果我在属性的 getter 中抛出异常,是否可以在 catch block 中获取属性的名称?

mysql - 修改列与删除和添加列 Mysql

c# - Entity Framework SQL First 数据库查询

PHP从表中获取所有结果,不是一遍又一遍地获取相同的ID吗?

c# - 如何创建一个立即完成的 IAsyncResult?