[英]How to update record using 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是否存在錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.