Entity Framework 7 Entity Tracking and no Tracking

Butter Ngo | 1286 day | 1528


Hôm nay mình chia sẻ về 1 lỗi mình bị phải khi sử dụng EF7 khi mình đang thực hiện update data cho 1 entity.

Dòng này mình dùng để lấy đối tượng cần edit
var entity = await _context.Set<TEntity>().FindAsync(keyValues)
/*
   entity.Title = "test update";
*/
Dòng này dùng để set state là edit đối tượng
_context.Entry(entity).State = EntityState.Modified;
Cuồi cùng mình gọi SaveChangesAsync() để tương tác với database
await _context.SaveChangesAsync();

Và sau khi mình gọi SaveChangesAsync() thì kết quả return về là.

"Message: The instance of entity type 'Question' cannot be tracked because another 

instance of this type with the same key is already being tracked. When adding new 

entities, for most key types a unique temporary key value will be created if no key is 

set (i.e. if the key property is assigned the default value for its type). If you are 

explicitly setting key values for new entities, ensure they do not collide with existing 

entities or temporary values generated for other new entities. When attaching existing 

entities, ensure that only one entity instance with a given key value is attached to the 

context. \n StackTrace:    at 

Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(TKey key, InternalEntityEntry entry)\r\n 

Sau đó mình lên mạng tim hiểu thi entity framework có 2 mô hình "connect và disconnect" link tham khảo link.

Và ở đây bạn chỉ cần add AsNoTracking() là bạn có thể giải quyết được.

// ngay dòng này chung ta chỉ cần .AsNoTracking() thêm đoạn code này vô
var entity = await _context.Set<TEntity>().AsNoTracking().FirstOrDefaultAsync(x => x.Id.Equals(model.Id));

_context.Entry(entity).State = EntityState.Modified;

await _context.SaveChangesAsync();

 


0 Answers





Top Question

Bi lỗi Invalid Column Name khi sử dụng LinQ (.Net)

1135 day
Bảo Dương
Views 1338
Answers 2

.NET CORE API JWT (.Net Core)

428 day
huynhminhnhut97@gmail.com
Views 940
Answers 2

Làm thế nào để lấy information từ token (.Net Core)

525 day
ngovu.dl@gmail.com
Views 851
Answers 1

Unit Test In .NET Core (.Net Core)

460 day
phuongnd.tech@gmail.com
Views 434
Answers 1

Top Articles

Bất Đầu Với WebApi Và Dot Net Core (.Net Core)

1276 day
Butter Ngo
Views 8931
Comments 0

Dot Net Core Bearer Token With (JWT) (.Net Core)

1208 day
Butter Ngo
Views 5557
Comments 0

Repository Và Unit Of Work (Entity Framework)

1195 day
ndtung449@gmail.com
Views 5040
Comments 0

Bắt Đầu Với Dot NET Core (.Net Core)

1288 day
Butter Ngo
Views 4425
Comments 0