EF4 POCO অবজেক্টের পরিবর্তনগুলি সংরক্ষণ করার সময় সম্পর্কগুলি আপডেট করুন


107

সত্তা ফ্রেমওয়ার্ক 4, পোকো অবজেক্টস এবং এএসপি.নেট এমভিসি 2। ব্লগপোস্ট এবং ট্যাগ সত্ত্বার মধ্যে বলতে পারি যে আমার অনেকের সাথে অনেকগুলি সম্পর্ক রয়েছে। এর অর্থ হ'ল আমার টি 4 জেনারেটেড পোকো ব্লগপোস্ট ক্লাসে আমার রয়েছে:

public virtual ICollection<Tag> Tags {
    // getter and setter with the magic FixupCollection
}
private ICollection<Tag> _tags;

আমি অবজেক্ট কনটেক্সটসের একটি উদাহরণ থেকে একটি ব্লগপোস্ট এবং সম্পর্কিত ট্যাগগুলির জন্য জিজ্ঞাসা করি এবং এটি অন্য স্তরে প্রেরণ করি (এমভিসি অ্যাপ্লিকেশনটিতে দেখুন)। পরে আমি পরিবর্তিত বৈশিষ্ট্য এবং পরিবর্তিত সম্পর্কের সাথে আপডেট হওয়া ব্লগপোস্টটি ফিরে পাই। উদাহরণস্বরূপ এটিতে "এ" "বি" এবং "সি" ট্যাগ ছিল এবং নতুন ট্যাগগুলি হ'ল "সি" এবং "ডি"। আমার বিশেষ উদাহরণে কোনও নতুন ট্যাগ নেই এবং ট্যাগগুলির বৈশিষ্ট্যগুলি কখনই পরিবর্তিত হয় না, তাই কেবলমাত্র যা সংরক্ষণ করা উচিত তা হল পরিবর্তিত সম্পর্ক। এখন এটি অন্য একটি অবজেক্ট কনটেক্সটে সংরক্ষণ করতে হবে। (আপডেট: এখন আমি একই প্রসঙ্গে উদাহরণটি করার চেষ্টা করেছি এবং ব্যর্থও হয়েছি))

সমস্যা: আমি সম্পর্কগুলি সঠিকভাবে সংরক্ষণ করতে পারি না। আমি যা কিছু পেয়েছি তা চেষ্টা করেছিলাম:

  • কন্ট্রোলার.উপেটেট মডেল এবং কন্ট্রোলার ট্রাইআপডেটমোডেল কাজ করে না।
  • প্রসঙ্গ থেকে পুরানো ব্লগপোস্ট প্রাপ্তি সংগ্রহের সংশোধন কাজ করে না। (পরবর্তী পয়েন্ট থেকে বিভিন্ন পদ্ধতি সহ)
  • এটি সম্ভবত কার্যকর হবে তবে আমি আশা করি এটি কেবল একটি সমাধান, সমাধান নয় :(।
  • প্রতিটি সম্ভাব্য সংমিশ্রণে ব্লগপোস্ট এবং / অথবা ট্যাগগুলির জন্য সংযুক্ত / যুক্ত / চেঞ্জবজেক্টস্টেট ফাংশনগুলির চেষ্টা করা। ব্যর্থ হয়েছে.
  • এটি আমার যা প্রয়োজন তা দেখে মনে হচ্ছে তবে এটি কার্যকর হয় না (আমি এটি ঠিক করার চেষ্টা করেছি, তবে আমার সমস্যার জন্য পারি না)।
  • চেষ্টা করা চেঞ্জস্টেট / যুক্ত / সংযুক্ত / ... প্রসঙ্গে সম্পর্কের অবজেক্ট। ব্যর্থ হয়েছে.

"কাজ করে না" এর অর্থ বেশিরভাগ ক্ষেত্রে আমি প্রদত্ত "সমাধান" তে কাজ করেছি যতক্ষণ না এটি কোনও ত্রুটি তৈরি করে এবং কমপক্ষে ব্লগপস্টের বৈশিষ্ট্যগুলি সংরক্ষণ করে না। সম্পর্কের সাথে যা ঘটে তা পরিবর্তিত হয়: সাধারণত ট্যাগগুলি নতুন পিকে সঙ্গে ট্যাগ টেবিলের সাথে আবার যুক্ত করা হয় এবং সংরক্ষিত ব্লগপোস্টগুলি সেগুলি উল্লেখ করে, মূলগুলি নয়। অবশ্যই ফিরে আসা ট্যাগগুলিতে পিকে রয়েছে এবং সেভ / আপডেট পদ্ধতির আগে আমি পিকেগুলি যাচাই করি এবং এগুলি ডাটাবেসে থাকা সমান হয় তাই সম্ভবত EF মনে করে যে তারা নতুন বস্তু এবং সেই পিকেগুলি হ'ল অস্থায়ী।

একটি সমস্যা যা আমি জানি এবং এটি একটি স্বয়ংক্রিয় সহজ সমাধান সন্ধান করা অসম্ভব করে তুলতে পারে: যখন কোনও পোকো অবজেক্টের সংগ্রহ পরিবর্তন করা হয়, তখন উল্লিখিত ভার্চুয়াল সংগ্রহের সম্পত্তি দ্বারা এটি হওয়া উচিত, কারণ তখন ফিক্সআপক্লিকেশন কৌশলটি অন্য প্রান্তে বিপরীত রেফারেন্সগুলি আপডেট করবে বহু থেকে বহু সম্পর্কের তবে যখন কোনও ভিউ আপডেটেড ব্লগপোস্ট অবজেক্টটিকে "রিটার্ন" দেয় তখন তা ঘটে নি। এর অর্থ হ'ল সম্ভবত আমার সমস্যার কোনও সহজ সমাধান নেই, তবে এটি আমাকে অত্যন্ত দু: খিত করে তুলবে এবং আমি EF4-POCO-MVC জয়কে ঘৃণা করব :( এছাড়াও এর অর্থ এই হবে যে এমভিসি পরিবেশে ইএফ এটি করতে পারে না EF4 অবজেক্টের ধরণগুলি ব্যবহৃত হয় :( আমি মনে করি স্ন্যাপশট ভিত্তিক পরিবর্তন ট্র্যাকিংটি এটি খুঁজে পাওয়া উচিত যে পরিবর্তিত ব্লগপোস্টের বিদ্যমান পিকেগুলির সাথে ট্যাগগুলির সাথে সম্পর্ক রয়েছে।

বিটিডব্লিউ: আমি মনে করি ওয়ান-টু-র সম্পর্কের ক্ষেত্রে একই সমস্যা ঘটে (গুগল এবং আমার সহকর্মী তাই বলে)। আমি এটি বাড়িতে চেষ্টা করে দেখব, তবে এটি যদি আমার অ্যাপ্লিকেশনে আমার ছয়টি থেকে বহু সম্পর্কের ক্ষেত্রেও সহায়তা না করে তবেও :(।


আপনার কোড পোস্ট করুন। এটি একটি সাধারণ দৃশ্য।
জন ফারেল

1
আমার এই সমস্যার একটি স্বয়ংক্রিয় সমাধান রয়েছে, এটি নীচের উত্তরগুলিতে লুকিয়ে রয়েছে তাই অনেকেই এটি মিস করে তবে দয়া করে একবার দেখুন কারণ এটি আপনাকে এখানে
brentmckendrick

@brentmckendrick আমার ধারণা অন্য একটি পদ্ধতির ভাল। সম্পূর্ণ পরিবর্তিত বস্তু গ্রাফটি তারের উপরে প্রেরণের পরিবর্তে কেন কেবল বদ্বীপ পাঠাবেন না? সেক্ষেত্রে আপনার উত্পন্ন ডিটিও ক্লাসও লাগবে না। যদি আপনার এই সম্পর্কে কোনও মতামত থাকে তবে দয়া করে আলোচনা করা যাক স্ট্যাকওভারফ্লো . com/ প্রশ্নস / ১৩৪৪৪6666/ / ক্যালকুলেট-অবজেক্ট -ডেল্টায়
শুভনোমাদ

উত্তর:


145

আসুন এটি চেষ্টা করুন:

  • প্রসঙ্গে ব্লগপোস্ট সংযুক্ত করুন। অবজেক্টের স্থিতির প্রসঙ্গের সাথে সংযুক্ত করার পরে, সমস্ত সম্পর্কিত অবজেক্ট এবং সমস্ত সম্পর্ক অপরিবর্তিত রয়েছে।
  • আপনার ব্লগপোস্টকে পরিবর্তিততে সেট করতে প্রসঙ্গ ব্যবহার করুন .অজেক্টস্টেট ম্যানেজ.চেন্জঅজেক্টস্টেট
  • ট্যাগ সংগ্রহের মাধ্যমে আইট্রেট করুন
  • প্রসঙ্গ ব্যবহার করুন। বর্তমান ট্যাগ এবং ব্লগপোস্টের মধ্যে সম্পর্কের জন্য স্থিতি স্থাপনের জন্য অবজেক্টস্টেটম্যানেজ.চেনজারিলিয়েশনশিপ স্টেট।
  • পরিবর্তনগুলোর সংরক্ষন

সম্পাদনা:

আমার ধারণা আমার একটি মন্তব্য আপনাকে মিথ্যা আশা দিয়েছে যে EF আপনার জন্য মার্জ করবে merge আমি এই সমস্যাটি নিয়ে অনেক খেলেছি এবং আমার উপসংহারে বলছে ইএফ আপনার পক্ষে এটি করবে না। আমি মনে করি আপনি আমার প্রশ্নটি এমএসডিএন- তেও পেয়ে গেছেন । বাস্তবে ইন্টারনেটে প্রচুর প্রশ্ন রয়েছে questions সমস্যাটি হ'ল এই পরিস্থিতিটি কীভাবে মোকাবেলা করা যায় তা স্পষ্টভাবে বলা হয়নি। সুতরাং আসুন সমস্যাটি একবার দেখুন:

সমস্যার পটভূমি

EF সত্তায় পরিবর্তনগুলি ট্র্যাক করতে হবে যাতে অধ্যবসায়টি জানে যে কোন রেকর্ডগুলি আপডেট করতে হবে, সন্নিবেশ করানো হবে বা মুছতে হবে। সমস্যাটি হ'ল পরিবর্তনগুলি ট্র্যাক করার দায়িত্ব অবজেক্ট কনটেক্সট। অবজেক্টকন্টেক্সট কেবল সংযুক্ত সংস্থাগুলির জন্য পরিবর্তনগুলি ট্র্যাক করতে সক্ষম। অবজেক্ট কনটেক্সট এর বাইরে যে সত্তা তৈরি করা হয় সেগুলি মোটেই ট্র্যাক হয় না।

সমস্যার বিবরণ

উপরের বর্ণনার উপর ভিত্তি করে আমরা পরিষ্কারভাবে বলতে পারি যে সংযুক্ত পরিস্থিতিগুলির জন্য EF আরও উপযুক্ত যেখানে সত্তা সর্বদা প্রসঙ্গে যুক্ত থাকে - উইনফর্ম অ্যাপ্লিকেশনটির জন্য আদর্শ typ ওয়েব অ্যাপ্লিকেশনগুলির জন্য সংযোগ বিচ্ছিন্ন দৃশ্যের প্রয়োজন হয় যেখানে অনুরোধ প্রক্রিয়াকরণ এবং সত্তার সামগ্রীটি ক্লায়েন্টের HTTP প্রতিক্রিয়া হিসাবে পাস করার পরে প্রসঙ্গটি বন্ধ হয়ে যায়। পরবর্তী এইচটিটিপি অনুরোধ সত্তার পরিবর্তিত সামগ্রী সরবরাহ করে যা পুনরায় তৈরি করতে হবে, নতুন প্রসঙ্গে সংযুক্ত থাকতে হবে এবং স্থির থাকতে হবে। বিনোদনের বিষয়টি সাধারণত প্রসঙ্গের স্কোপের বাইরে সুখী হয় (স্থির অজ্ঞতার সাথে স্তরযুক্ত আর্কিটেকচার)।

সমাধান

তাহলে এই জাতীয় সংযোগ বিচ্ছিন্ন দৃশ্যের সাথে কীভাবে মোকাবিলা করবেন? পোকো ক্লাস ব্যবহার করার সময় আমাদের কাছে পরিবর্তন ট্র্যাকিংয়ের সাথে মোকাবিলা করার 3 টি উপায় রয়েছে:

  • স্ন্যাপশট - সংযোগ বিচ্ছিন্ন দৃশ্যের জন্য একই প্রসঙ্গে = অকেজো
  • গতিশীল ট্র্যাকিং প্রক্সি - সংযোগ বিচ্ছিন্ন দৃশ্যের জন্য একই প্রসঙ্গে = অকেজো প্রয়োজন
  • ম্যানুয়াল সিঙ্ক্রোনাইজেশন।

একক সত্তায় ম্যানুয়াল সিঙ্ক্রোনাইজেশন করা সহজ কাজ। আপনাকে কেবল সত্তা সংযুক্ত করতে হবে এবং Oোকানোর জন্য অ্যাডোবজেক্টটি কল করতে হবে, মুছে ফেলার জন্য মুছুন বা মুছে ফেলার জন্য মুছুন বা আবশ্যককে আপডেট করার জন্য সংশোধিত রূপে সেট করুন। আসল ব্যথা তখনই আসে যখন আপনাকে একক সত্তার পরিবর্তে অবজেক্ট গ্রাফ নিয়ে কাজ করতে হয়। এই ব্যথাটি তখন আরও খারাপ হয় যখন আপনাকে স্বতন্ত্র সমিতিগুলি (যারা বিদেশী কী সম্পত্তি ব্যবহার করে না) এবং অনেকের সাথে অনেকগুলি সম্পর্কের সাথে ডিল করতে হয়। সেক্ষেত্রে আপনাকে অবজেক্ট গ্রাফের প্রতিটি সত্তা ম্যানুয়ালি সিলেক্ট করতে হবে তবে বস্তুর গ্রাফের প্রতিটি সম্পর্কও।

ম্যানুয়াল সিঙ্ক্রোনাইজেশনটিকে এমএসডিএন ডকুমেন্টেশন দ্বারা সমাধান হিসাবে প্রস্তাব করা হয়: সংযুক্তি এবং পৃথকীকরণগুলি বলে:

অবজেক্টগুলি অপরিবর্তিত অবস্থায় অবজেক্ট প্রসঙ্গে যুক্ত থাকে। আপনার যদি কোনও অবজেক্টের বা সম্পর্কের অবস্থা পরিবর্তন করতে হয় কারণ আপনি জানেন যে আপনার অবজেক্টটি বিচ্ছিন্ন অবস্থায় পরিবর্তিত হয়েছিল, নীচের একটি পদ্ধতি ব্যবহার করুন।

উল্লিখিত পদ্ধতিগুলি হ'ল চেঞ্জোবজেক্টস্টেট এবং অবজেক্টস্টেটম্যানেজারের চেঞ্জরিলিশনশিপ স্ট্যাট = ম্যানুয়াল পরিবর্তন ট্র্যাকিং। অনুরূপ প্রস্তাব অন্যান্য এমএসডিএন ডকুমেন্টেশন আর্টিকেলে রয়েছে: সম্পর্কের সংজ্ঞা ও পরিচালন বলেছেন:

আপনি যদি সংযোগ বিচ্ছিন্ন বস্তুর সাথে কাজ করছেন তবে আপনাকে ম্যানুয়ালি সিঙ্ক্রোনাইজেশন পরিচালনা করতে হবে।

এছাড়াও EF v1 সম্পর্কিত ব্লগ পোস্ট রয়েছে যা EF এর ঠিক এই আচরণের সমালোচনা করে।

সমাধানের কারণ

ইএফের অনেকগুলি "সহায়ক" অপারেশন এবং সেটিংস রয়েছে যেমন রিফ্রেশ , লোড , অ্যাপলকেনচার্যভ্যালুস , অ্যাপ্লিকোরিজিনালভ্যালিউস , মার্জঅপশন ইত্যাদি But তবে আমার তদন্তের মাধ্যমে এই সমস্ত বৈশিষ্ট্যগুলি কেবলমাত্র একক সত্তার জন্য কাজ করে এবং কেবলমাত্র স্কেলার প্রিপার্টিগুলিকে প্রভাবিত করে (= নেভিগেশন বৈশিষ্ট্য এবং সম্পর্ক নয়)। আমি বরং সত্তার মধ্যে নেস্টেড জটিল ধরণের সাথে এই পদ্ধতিগুলি পরীক্ষা করি না।

অন্যান্য প্রস্তাবিত সমাধান

আসল মার্জ কার্যকারিতার পরিবর্তে ইএফ দল স্ব-ট্র্যাকিং সত্তা (এসটিই) নামে কিছু সরবরাহ করে যা সমস্যার সমাধান করে না। সবার আগে এসটিই কেবল তখনই কাজ করে যদি একই উদাহরণটি পুরো প্রসেসিংয়ের জন্য ব্যবহৃত হয়। ওয়েব অ্যাপ্লিকেশনটিতে আপনি যদি অবস্থা বা সেশনে উদাহরণটি সংরক্ষণ না করেন তবে এটি ক্ষেত্রে নয়। এ কারণে আমি ইএফ ব্যবহার করে অত্যন্ত অসন্তুষ্ট এবং আমি এনএইচবারনেটের বৈশিষ্ট্যগুলি যাচাই করতে যাচ্ছি। প্রথম পর্যবেক্ষণে বলা হয়েছে যে এনহাইবারনেট সম্ভবত এই জাতীয় কার্যকারিতা রয়েছে

উপসংহার

আমি এমএসডিএন ফোরামে অন্য সম্পর্কিত প্রশ্নের একক লিঙ্কের সাথে এই অনুমানগুলি শেষ করব । জিশান হিরানীর উত্তরটি দেখুন। তিনি সত্তা ফ্রেমওয়ার্ক 4.0 রেসিপি লেখক । যদি তিনি বলেন যে অবজেক্ট গ্রাফগুলিতে স্বয়ংক্রিয়ভাবে সংযুক্তি সমর্থিত নয়, আমি তাকে বিশ্বাস করি।

তবে এখনও সম্ভাবনা আছে যে আমি সম্পূর্ণ ভুল এবং কিছু স্বয়ংক্রিয় মার্জ কার্যকারিতা EF এ বিদ্যমান exists

সম্পাদনা 2:

আপনি দেখতে পাচ্ছেন যে এটি এমএস কানেক্টে 2007 এর পরামর্শ হিসাবে ইতিমধ্যে যুক্ত করা হয়েছিল MS


7
এটি SO- এ আমি পড়েছি সেরা উত্তরগুলির মধ্যে একটি। এই বিষয়টিতে এতগুলি এমএসডিএন নিবন্ধ, ডকুমেন্টেশন এবং ব্লগ পোস্টগুলি কী পেতে পেরেছেন তা আপনি স্পষ্ট করে বলেছেন। EF4 সহজাতভাবে "বিচ্ছিন্ন" সত্তা থেকে সম্পর্ক আপডেট করার পক্ষে সমর্থন করে না। এটি কেবল আপনার নিজের প্রয়োগ করার জন্য সরঞ্জাম সরবরাহ করে। ধন্যবাদ!
tyriker

1
সুতরাং কয়েক মাস আগে, কীভাবে এনএফবারনেট ইফ 4 এর সাথে এই ইস্যুটির সাথে সম্পর্কিত?
কলমেলএএনএন

1
এটি এনহাইবারনেট :-) এ খুব ভালভাবে সমর্থিত: আমার উদাহরণস্বরূপ এটি 3-স্তরের গভীর অবজেক্ট গ্রাফ, প্রশ্নের উত্তর রয়েছে, প্রতিটি উত্তরের মন্তব্য রয়েছে, এবং প্রশ্নেরও মন্তব্য রয়েছে। এনহাইবারনেট আপনার অবজেক্টের গ্রাফটি অবিচ্ছিন্ন / একীভূত করতে পারে, এটি যতই জটিল হোক না কেন ienablemuch.com/2011/01/nhibernate-save-your- whole-object.html আর একজন সন্তুষ্ট এনহাইবারনেট ব্যবহারকারী: কোডিংইনস্টিনেক্ট.
মাইকেল Buen

2
আমি যা পড়েছি তার মধ্যে একটি সেরা ব্যাখ্যা !! অনেক অনেক ধন্যবাদ
মার্ভেলট্র্যাকার

2
EF টিম এই EF6-এর পরে সম্বোধন করার পরিকল্পনা করেছে। আপনি ইন্টিফ্রেমেওয়ার্ক.কম্প্লেক্স
এরিক জে

19

উপরে যে সমস্যাটি লাদিস্লাভ দ্বারা বর্ণিত হয়েছিল তার আমার একটি সমাধান আছে। আমি DbContext এর জন্য একটি এক্সটেনশন পদ্ধতি তৈরি করেছি যা সরবরাহিত গ্রাফ এবং অবিচ্ছিন্ন গ্রাফের ভিন্নতার ভিত্তিতে স্বয়ংক্রিয়ভাবে অ্যাড / আপডেট / ডিলিট সম্পাদন করবে।

বর্তমানে সত্ত্বা ফ্রেমওয়ার্কটি ব্যবহার করে আপনাকে পরিচিতিগুলির আপডেট ম্যানুয়ালি সম্পাদন করতে হবে, প্রতিটি পরিচিতি নতুন কিনা তা যাচাই করতে হবে এবং আপডেট হয়েছে কিনা তা পরীক্ষা করতে হবে, মুছে ফেলা হয়েছে কিনা তা পরীক্ষা করে তা ডাটাবেস থেকে মুছে ফেলতে হবে। একবার আপনাকে কোনও বৃহত সিস্টেমে কয়েকটি ভিন্ন সমষ্টিগুলির জন্য এটি করতে হলে আপনি বুঝতে শুরু করেন যে আরও ভাল, আরও সাধারণ উপায় হতে হবে।

দয়া করে একবার দেখুন এবং দেখুন যে এটি http://refactorthis.wordpress.com/2012/12/11/introducing-graphdiff-for-entity-framework-code-first-allowing-automated-updates-of-a- এ সহায়তা করতে পারে কিনা গ্রাফ অফ বিচ্ছিন্ন-সত্ত্বা /

আপনি এখানে সরাসরি কোডে যেতে পারেন https://github.com/refactorthis/ গ্রাফডিফ


আমি নিশ্চিত যে আপনি সহজেই এই প্রশ্নটি সমাধান করতে পারবেন , আমি এটির সাথে খারাপ সময় কাটাচ্ছি।
শিমি ওয়েটজ্যান্ডলার

1
হাই শিমি, দুঃখিত অবশেষে একবার দেখার জন্য কিছুটা সময় পেল। আমি আজ রাতে এটি দেখতে হবে।
ব্রেন্টমেকেন্ডেরিক

এই গ্রন্থাগারটি দুর্দান্ত এবং আমাকে অনেক সময় বাঁচিয়েছে! ধন্যবাদ!
লর্ডজেব

9

আমি জানি ওপির জন্য দেরি হয়েছে তবে যেহেতু এটি একটি খুব সাধারণ সমস্যা তাই এটি এটি অন্য কারও কারও পরিবেশন করার ক্ষেত্রে পোস্ট করেছি। আমি এই ইস্যুটির সাথে ঝুঁকছি এবং আমার মনে হয় আমি মোটামুটি সহজ সমাধান পেয়েছি, আমি যা করি তা হ'ল:

  1. মুখ্য বস্তুকে (উদাহরণস্বরূপ ব্লগগুলি) এর স্থিতি পরিবর্তিত করে সংরক্ষণ করুন।
  2. আমার প্রয়োজনীয় সংগ্রহগুলি সহ আপডেট হওয়া অবজেক্টের জন্য ডাটাবেস অনুসন্ধান করুন।
  3. জিজ্ঞাসা করুন এবং রূপান্তর করুন। আমি আমার সংগ্রহে অন্তর্ভুক্ত থাকতে চাই সেগুলি সন্ধান করুন ()।
  4. আমি পদক্ষেপ 3 থেকে প্রাপ্ত তালিকায় মূল অবজেক্টের সংগ্রহ (গুলি) আপডেট করুন।
  5. পরিবর্তনগুলোর সংরক্ষন();

নিম্নলিখিত উদাহরণে "ডেটাওবজ" এবং "_ বিভাগসমূহ" আমার নিয়ামক দ্বারা প্রাপ্ত প্যারামিটারগুলি "ডেটাবোজ" হ'ল আমার প্রধান অবজেক্ট, এবং "_ বিভাগসমূহ" ভিউটিতে নির্বাচিত বিভাগের আইডি সহ একটি আইনিউমেবল।

    db.Entry(dataobj).State = EntityState.Modified;
    db.SaveChanges();
    dataobj = db.ServiceTypes.Include(x => x.Categories).Single(x => x.Id == dataobj.Id);
    var it = _categories != null ? db.Categories.Where(x => _categories.Contains(x.Id)).ToList() : null;
    dataobj.Categories = it;
    db.SaveChanges();

এমনকি এটি একাধিক সম্পর্কের জন্যও কাজ করে


7

সত্তা ফ্রেমওয়ার্ক টিম সচেতন যে এটি একটি ব্যবহারযোগ্যতার সমস্যা এবং এটি EF6-র পরে সমাধান করার পরিকল্পনা করছে।

সত্তা ফ্রেমওয়ার্ক টিম থেকে:

এটি একটি ব্যবহারযোগ্যতার বিষয় যা আমরা সচেতন এবং এটি এমন একটি বিষয় যা আমরা ভাবছিলাম এবং ইএফ 6 পরবর্তী পোস্টে আরও কাজ করার পরিকল্পনা করছি। সমস্যাটি ট্র্যাক করার জন্য আমি এই কাজের আইটেমটি তৈরি করেছি: http://entityframework.codeplex.com/workitem/864 কাজের আইটেমটিতে এর জন্য ব্যবহারকারীর ভয়েস আইটেমের একটি লিঙ্ক রয়েছে - আমি আপনাকে উত্সাহিত করি যদি এটির জন্য ভোট দিতে ইতিমধ্যে করা হয়নি।

যদি এটি আপনাকে প্রভাবিত করে তবে বৈশিষ্ট্যটির জন্য ভোট দিন

http://entityframework.codeplex.com/workitem/864


পোস্ট-EF6? আশাবাদী ক্ষেত্রে তখন কোন বছর হবে?
কোয়েটজলকোটল

@ কোয়েটজলকোটল: কমপক্ষে এটি তাদের রাডারে রয়েছে :-) EF 1 থেকে অনেক দীর্ঘ পথ পেরিয়েছে তবে এখনও যাওয়ার উপায় রয়েছে।
এরিক জে।

1

উত্তরগুলির সবগুলিই সমস্যাটি ব্যাখ্যা করার জন্য দুর্দান্ত ছিল, তবে সেগুলির কোনওোটাই আমার পক্ষে সমস্যাটি সমাধান করেনি।

আমি দেখতে পেয়েছি যে আমি যদি পিতৃ সত্তার মধ্যে সম্পর্কটি ব্যবহার না করে তবে কেবলমাত্র সুনির্দিষ্টভাবে কাজ করে এমন শিশু সত্তা যুক্ত করে এবং সরিয়ে ফেলেছি।

ভিসির জন্য দুঃখিত তবে আমি যে প্রকল্পে কাজ করছি তাতে লেখা আছে।

"রিপোর্টারোল" এর সাথে প্যারেন্ট সত্তা "রিপোর্ট" এর অনেকের একটি সম্পর্ক রয়েছে এবং "রিপোর্টারোলস" সম্পত্তি রয়েছে property নতুন ভূমিকাগুলি একটি অজ্যাক্স কল থেকে কমা দ্বারা পৃথক করা স্ট্রিংয়ের মধ্য দিয়ে যায়।

প্রথম লাইনটি সমস্ত শিশু সত্তা সরিয়ে ফেলবে, এবং যদি আমি "রিপোর্ট.রেপট্রোলস। রিমুভ (এফ)" ব্যবহার না করে "ডিবি.রেপট্রোলস। রিমুভ (চ)" ব্যবহার করি তবে আমি ত্রুটি পেতে পারি।

report.ReportRoles.ToList.ForEach(Function(f) db.ReportRoles.Remove(f))
Dim newRoles = If(String.IsNullOrEmpty(model.RolesString), New String() {}, model.RolesString.Split(","))
newRoles.ToList.ForEach(Function(f) db.ReportRoles.Add(New ReportRole With {.ReportId = report.Id, .AspNetRoleId = f}))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.