mysql - 如何使用 Entity Framework 6 MySQL 更新记录
问题描述
我正在寻找使用 Entity Framework 6 MYSQL 更新记录的正确方法。
下面是我现在正在使用的。
public void Update(User user)
{
using (var ctx = new DataSystemDbContext())
{
ctx.Users.Attach(user);
ctx.Entry(user).State = EntityState.Modified;
ctx.SaveChanges();
}
}
在我的单元测试中。
[TestMethod]
public async Task User_Update()
{
var userService = new UserService();
var user = userService.GetById(1);
user.FullName = "Test Fullname";
userService.Update(user);
var updatedUser = userService.GetById(1);
Assert.AreEqual(user.FullName, updatedUser.FullName);
}
当它执行时,我的所有用户记录都会更新。
这也与我的另一篇文章有关。但在我的另一篇文章中,它使用的是实时上下文,与此不同。
解决方案
我通过注释掉或不使用为 CRUD 生成的过程来解决此问题。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Mapp all entities in a single line.
//modelBuilder.Types().Configure(t => t.MapToStoredProcedures());
}
生成的 SQL
UPDATE `Users` SET `Email`=@gp1 WHERE `Id` = 6
-- @gp1: 'myemail@gmail.com' (Type = String, IsNullable = false, Size = 17)
-- Executing asynchronously at 25/06/2018 8:30:21 AM +08:00
-- Completed in 2 ms with result: 1
我不确定 MySQL Provider 是否有错误。
- 实体框架 v6.1.3
- MySQL.Data.Entity v6.10.7
- MySQL.Data v6.10.7
推荐阅读
- google-drive-api - google drive api v2/v3:exportLinks 和 File.export 是否相同?
- bash - docker-compose:CMD 变量替换
- python - 列出熊猫数据框列中的所有单词
- python - 从熊猫数据框中删除所有零和的列和行的最佳方法
- python - 寻找数字河流的交汇点
- html - html/css .css 文件更改
- c# - VS 的诊断工具是测量总进程内存还是当前进程内存
- apache-kafka - kafka-server-start:该进程无法访问该文件,因为它正在被另一个进程使用
- python - Django:禁止为用户添加相同的数据
- byte - Http.get 中的 Elm 字节解码