View Full Version : سوال: استفاده از GraphDiff در الگو واحد کار
parsdarab
شنبه 17 مهر 1395, 22:40 عصر
سلام دوستان
من چطوری می تونم از GraphDiff در الگوی واحد کار استفاده کنم
کتابخانه رو نصب کردم
اما در اینترفیس و کلاس context نمی دونم چطوری باید پیاده سازی بشه و تعریف بشه
اگه کسی کار کرده راهنمایی بکنه
ali_md110
یک شنبه 18 مهر 1395, 08:42 صبح
سلام
توی اینترفیس IUnitofwork اینجوری تعریف
TEntity UpdateGraphDiff<TEntity>(TEntity entity, Expression<Func<IUpdateConfiguration<TEntity>, object>> mapping) where TEntity : class, new();
و توی کلاس کانتکست اینجوری پیادش کنید
public virtual TEntity UpdateGraphDiff<TEntity>(TEntity entity, Expression<Func<IUpdateConfiguration<TEntity>, object>> mapping) where TEntity : class, new()
{
return this.UpdateGraph(entity, mapping);
}
طریقه استفادش هم اینجوریه مثلا توی یک کنترولز
_unitOfWork.UpdateGraphDiff(..........)
parsdarab
یک شنبه 18 مهر 1395, 21:16 عصر
ممنونم مهندس جان
parsdarab
یک شنبه 18 مهر 1395, 21:39 عصر
سلام موقع ذخیره خطا میده
GraphDiff supports detached entities only at this time. Please try AsNoTracking() or detach your entites before calling the UpdateGraph method
ali_md110
یک شنبه 18 مهر 1395, 22:07 عصر
لطفا کدهاتون رو بفرستید
شاید لامبدا تون مشکل داره اینجوری نمیشه مشکل حل کرد
در ضمن این
AsNoTracking رو هم اعمال کنید توی کوئریتون
parsdarab
دوشنبه 19 مهر 1395, 01:37 صبح
با قرار دادن کد زیر حل شد
_uow.MarkAsDetached<Personel>(tempModel);
parsdarab
دوشنبه 19 مهر 1395, 01:49 صبح
موقع درج یک رکورد جدید پیام conflict میده
tempModel.BasePersonelActivitys.Add
(new BasePersonelActivity { ActivityId = 3, Caption = "test", PersonelId = 8 });
_uow.MarkAsDetached<BasePersonel>(tempModel);
_uow.UpdateGraphDiff(tempModel, map => map
.AssociatedCollection(p => p.BasePersonelActivitys)
);
modelValidation = _uow.SaveAllChanges();
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.BasePersonelActivity_dbo.BaseActivities_Act ivityId". The conflict
parsdarab
دوشنبه 19 مهر 1395, 21:50 عصر
گراف دیف مگه به صورت اتوماتیک تشخیص نمیده که چه رکوردی تغییر کرده چه رکوردی حذف شده و چه رکوردی اضافه شده؟
parsdarab
سه شنبه 20 مهر 1395, 14:23 عصر
در موقع حذف رکورد در حالتی نمیتونه عملیات حذف رو انجام بده
142968
اگر لیستی مانند زیر باشه
142968Id Title PersonelId ActivityId
83 1 8 3
89 2 8 4
90 3 8 5
اگر ابتدا id 83 رو حذف کنم و ذخیره بزنم پیام conflict میده
اما اگر id 90 رو حذف کنم عملیات به درستی انجام میشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.