‫۱۰ سال و ۸ ماه قبل، چهارشنبه ۲۵ دی ۱۳۹۲، ساعت ۱۶:۴۷
پستها را خواندم، درست است؛ با این روش که شما فرمودید، میتوان رکوردهای جدید از قدیم را تشخیص داد(با استفاده از id) ولی موردی که باقی می‌ماند این است که سمت کلاینت ممکن است برخی از OrderLine‌ها ویرایش شوند و برخی نشوند و ما دقیقا نمیدانیم کدامها ویرایش شده اند و کدامها نشده اند، تا در سرور state آنها را بصورت  Unchanged    و یا Modified   قرار دهیم.  آیا روشی برای تشخیص این مورد وجود دارد؟ 
‫۱۰ سال و ۸ ماه قبل، چهارشنبه ۲۵ دی ۱۳۹۲، ساعت ۱۳:۲۳
ممنون از راهنماییتون، پروژه رو نگاه کردم، شبیه به سناریو فوق در بخش ویرایش یک پست وجود داره که در اونجا رابطه یک به چند بین Post  و DownLoadLink هست.
اما روشی که برای ویرایش در اونجا استفاده شده به این صورت هست که ابتدا در در اکشن متد   EditPost کنترلر   PostController  ناحیه ادمین، همه DownLoadLink های پستی که در حال ویرایش آن هستیم، پاک میشوند و سپس در متد EditPost مربوط به PostService، دانلودلینکهای  EditPostModel  به جای آنها مینشینند، در واقع در صورت ویرایش دانلودلینکهای یک پست، ویرایش واقعی انجام نمیشود، بلکه این کار با حذف(sql Delete) کلیه دانلودلینکهای آن پست از DB و درج مجدد دانلودلینکهای تغییر یافته و نیافته (sql Insert) ، شبیه سازی میشود. درست است که نتیجه کار با ویرایش واقعی(sql Update) تفاوت نمیکتد اما به نظر من ویرایش با این روش سه مشکل زیر را دارد:
  1. حتی اگر هنگام ویرایش یک پست هیچ تغییری در دانلودلینکها داده نشود باز هم حذف تمامی آنها و درج مجدد آنها صورت خواهد گرفت.
  2. پایین آمدن کارایی وقتی که تعداد رکوردهای طرف چندِ رابطۀ یک به چند زیاد باشد(در اینجا دانلودلینکها).
  3. در برخی موارد مثل مورد زیر که طرف چند رابطه ( OrderLine ) دارای ارتباطاتی باشد، حذف فیزیکی  و درج مجدد آن به هنگام ویرایش Order دردسرساز خواهد شد:

آیا راهی برای رفع این موارد وجود دارد؟ به عبارت دیگر آیا راهی وجود دارد که به جای حذف فیزیکی رکوردها و درج تغییرات(Delete,Insert)؛ فقط تغییرات را اعمال کنیم(Update)؟
‫۱۰ سال و ۹ ماه قبل، شنبه ۷ دی ۱۳۹۲، ساعت ۲۱:۰۱
با توجه به اینکه طول عمر یک DbContext در وب معادل طول عمر یک درخواست است(EF Code First #12)، سناریو فوق در وب چطور میتواند پیاده شود؟
‫۱۰ سال و ۹ ماه قبل، شنبه ۷ دی ۱۳۹۲، ساعت ۱۷:۱۲
ممنون ولی در مثال Databinding with WinForms، در متد OnLoad فرم این دستور استفاده شده:
this.categoryBindingSource.DataSource = _context.Categories.Local.ToBindingList();
 از خواص DbContext در لایه UI استفاده  شده، این کار درست به نظر نمیاد، نظر شما چیه؟
‫۱۰ سال و ۹ ماه قبل، شنبه ۷ دی ۱۳۹۲، ساعت ۱۵:۴۹
جناب نصیری ممنون از جوابتون، با روشی که میفرمایید(استفاده از DbContext در سطح فرم)چنانچه مدل من به شکل زیر باشه :

و صفحه ویرایش سفارش من به شکل زیر:

و کاربر پس از زدن دکمه ویرایش قادر به انجام کارهای زیر باشه:
  • ویرایش شماره سفارش
  • ویرایش یک OrderLine
  • حذف یک OrderLine
  • ویرایش یک OrderLine
  • اضافه کردن یک OrderLine 

و سپس بخواد دکمه ذخیره رو بزنه؛ برای اینکه کل تغییرات کاربر رو ذخیره کنم کدوم یک از روشهای زیر رو بایستی استفاده کنم؟  

  1. event‌های مناسبی رو پیدا کنم و به محض رخ دادن اونها بر اساس اونها تصمیم بگیرم که entity  مورد نظر بایستی در DbContext(اضافه/حذف و یا ویرایش) بشه?
  2. تا زمانی که کاربر دکمه ذخیره رو نزده، کاری با DbContext نداشته باشم و وقتی کاربر دکمه ذخیره رو زد، گراف(سفارش و آیتمهای سفارش) رو به DbContext بدم؟  
‫۱۰ سال و ۹ ماه قبل، شنبه ۷ دی ۱۳۹۲، ساعت ۰۱:۳۹
فرض کنید که بخواهیم در این مثال این کارها رو انجام بدیم:
  1. در یک صفحه لیست کالاها و دسته بندی اونها رو نشون بدیم.
  2. کاربر قادر باشه در همون صفحه مشخصات یک کالا شامل گروه کالا یا نام کالا رو ویرایش کنه.
در این حالت برای ویرایش آیا بایستی از همون وهله DbContext که جهت گرفتن لیست کالاها استفاده شده، استفاده بشه؟ یا برای ویرایش بایستی یک وهله جدید DbContext ساخته بشه؟
‫۱۰ سال و ۹ ماه قبل، دوشنبه ۲۵ آذر ۱۳۹۲، ساعت ۱۸:۱۴
آیا امکان ثبت یک گراف از اشیائ مرتبط، بصورت یکجا در طی یک درخواست وجود دارد؟(در یک برنامه multi-tier وب یا ویندوزی) منظورم این است که فرضا مدلی داریم به شکل زیر:

آیا امکان این وجود دارد که کاربر یک سفارش را بصورت زیر ویرایش کند:

  1. ویرایش تاریخ سفارش در کلاس Order
  2. اضافه نمودن یک OrderLine جدید به Order
  3. حذف یکی از OrderLine‌های موجود
  4. ویرایش Product مربوط به یک OrderLine
و سپس دکمه Save را بزند؟

‫۱۰ سال و ۱۰ ماه قبل، شنبه ۲۳ آذر ۱۳۹۲، ساعت ۲۳:۲۹
فرض کنید آزمایش دیگری غیر از آزمایش خون تعریف شود، مثلا آزمایش ادرار؛ اونوقت این رنگ(و نه رنگ خون) در اونجا هم مورد استفاده پیدا میکند. بنابر این رابطه بایستی many-to-many باشد.  یا حتی میتوان برای TestParameter واحد اندازه گیری(UOM) در نظر گرفت که برای آن هم همین مساله رخ میدهد(چون هر پارامتر تست میتواند چندین واحد اندازه گیری داشته باشد و هر واحد اندازه گیری در مورد چندین پارامتر تست استفاده شود).
‫۱۰ سال و ۱۰ ماه قبل، شنبه ۲۳ آذر ۱۳۹۲، ساعت ۲۰:۴۹
فرض کنید من لازم دارم در یک برنامه مدیریت آزمایشگاه؛ کاربر بتونه ساختار تستها رو تعریف کنه و بگه اون تست چه پارامترهایی داره و مقادیر مجاز هر پارامتر چی‌ها هست و بعدش بر اساس این ساختار تعریف شده، مقادیر مشاهده شده در آزمایش واقعی رو برای این تست ثبت کنه بنابر این من این کلاسها رو طراحی کرده ام:
تا اینجا ساختار تست که شامل چند پارامتر با مقادیر مجازشون هست رو میشه با این کلاسها تعریف کرد.
حالا فرض کنید برای یک تست تعریف شده با این ساختار میخواهیم مقادیر مشاهده شده واقعی رو ثبت کنیم(ActualTest,ActualParameterValue). وقتی بخوام رنگ خون رو از لیست رنگهای مجاز تعریف شده برای این پارامتر انتخاب کنم، قاعدتا بایستی id مربوط به جدول واسط(TestAcceptableValueInTestParameter) به عنوان id رنگ انتخاب شده در جدول مقدار واقعی پارامتر ثبت بشه. به عبارت دیگه من با id کلاسی کار دارم که اگر با روش many-to-many  ذکر شده برای EF کار کنم، همچین کلاسی جزو مدلهای من نیست. آیا EF راهکاری برای این موارد داره؟
ممنون.
 
‫۱۱ سال و ۳ ماه قبل، جمعه ۲۱ تیر ۱۳۹۲، ساعت ۲۳:۰۴
قسمت Find متد Update شما در حالت detached اضافی است. یعنی اگر می‌دونید که این Id در دیتابیس وجود داره نیازی به Findاش نیست. فقط State اون رو تغییر بدید کار می‌کنه. 
آیا این قسمت از کد برای تشخیص objectهای تکراری در گراف object‌های ما نیست؟ ونبایستی uncomment شود؟ طبق این لینک .