با سلام من میخواهم با آپدیت یک رکود در جدولی اطلاعات فیلد های دیگری هم آپدیت شود و دستورات من به این شکل است برای آپدیت رکوردهای بعدی و همچین از مدل unit of work برای اتصال به دیتا بیس و آپدیت استفاده می کنم اما با خطایی بصورت زیر مواجه میشوم.
خطا:
The instance of entity type cannot be tracked because another instance of this type with the same key is already being tracked
وقتی می خواید یک رکورد رو آپدیت کنید باید ID یا همون کلید اصلی اون رکورد هم داشته باشید. الان در این تصویری که شما ارسال کردید در حلقه آیا کلید اصلی جدول Passandaz وجود داره؟
نکته بعدی اینکه وقتی می خواید چندین رکورد رو آپدیت کنید بهتره که از این روش استفاده نکنید و یک کوئری برای این کار بنویسید
public void Update(int LabResponseDetailsID, byte LabResponseAdaptation, string LabResponseResult, string labresponsedescription)
{
var result = (from lr in _context.LabResponseDetails_Tbl where lr.LabResponseDetailsID == LabResponseDetailsID select lr);
var current = result.FirstOrDefault();
if (result.Count() != 0)
{
current.LabResponseAdaptation = LabResponseAdaptation;
current.LabResponseResult = LabResponseResult;
current.LabResponseDescription = labresponsedescription;
_context.LabResponseDetails_Tbl.Attach(current);
_context.Entry(current).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
}
}
در کدهای بالا یک متد برای آپدیت اطلاعات نوشته شده. که چندین فیلد درون اون آپدیت میشه.
شما کافیه در یک interface این متد رو تعریف کنید و درون کنترلر ازش استفاده کنید
public interface IRefferalToLaboratoryRepository
{
void UpdateLabResponseDetails(int LabResponseDetailsID, byte LabResponseAdaptation,string LabResponseResult, string labresponsedescription);
}
حالا توی حلقه for میتونید فقط همین متد رو صدا بزنید
for (int i = 0; i < length; i++)
{
_interface.Update(LabResponseDetailsID,LabResponseAdaptation,LabResponseResult, labresponsedescription);
}
_context.save()
ضمنا دستور savechange هم بهتره خارج از حلقه قرار بدید تا تعداد درخواست های سمت دیتابیس بیخود زیاد نشه.
تاریخ :
1403/10/22
- ساعت :
12:29:00 PM
- بازدید :
91
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:21:00 PM
- بازدید :
6649
- پاسخ :
1
|
تاریخ :
1403/11/02
- ساعت :
08:17:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1398/10/19
- ساعت :
02:01:00 PM
- بازدید :
3091
- پاسخ :
2
|
تاریخ :
1398/10/26
- ساعت :
10:24:00 PM
- بازدید :
2129
- پاسخ :
1
|
تاریخ :
1403/10/30
- ساعت :
12:33:00 AM
- بازدید :
74
- پاسخ :
1
|
تاریخ :
1403/10/30
- ساعت :
12:40:00 AM
- بازدید :
66
- پاسخ :
1
|
تاریخ :
1403/10/30
- ساعت :
12:39:00 AM
- بازدید :
93
- پاسخ :
1
|
تاریخ :
1398/10/19
- ساعت :
02:54:00 PM
- بازدید :
2802
- پاسخ :
3
|
تاریخ :
1403/10/25
- ساعت :
12:39:00 AM
- بازدید :
146
- پاسخ :
1
|
تاریخ :
1403/11/03
- ساعت :
07:34:00 PM
- بازدید :
63
- پاسخ :
0
|
تاریخ :
1399/12/20
- ساعت :
10:32:00 AM
- بازدید :
2520
- پاسخ :
1
|
تاریخ :
1398/08/09
- ساعت :
07:44:00 PM
- بازدید :
4859
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:30:00 PM
- بازدید :
2577
- پاسخ :
1
|
تاریخ :
1403/11/03
- ساعت :
07:21:00 PM
- بازدید :
44
- پاسخ :
0
|
تاریخ :
1403/10/22
- ساعت :
12:29:00 PM
- بازدید :
91
- پاسخ :
1
|
تاریخ :
1399/09/20
- ساعت :
01:21:00 PM
- بازدید :
6649
- پاسخ :
1
|
تاریخ :
1403/11/02
- ساعت :
08:17:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1398/10/15
- ساعت :
08:02:00 PM
- بازدید :
2730
- پاسخ :
1
|
تاریخ :
1398/10/19
- ساعت :
02:01:00 PM
- بازدید :
3091
- پاسخ :
2
|