gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:07:26 25 4
gpt4 key购买 nike

我使用 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(IReadOnlyList
1 个条目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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com