আমার ব্যক্তিগত "প্রায়শই ব্যাখ্যা করা" সমস্যাগুলি:
এন্টি-প্যাটার্নস
ডিটিও ব্যবহার না করে বিচ্ছিন্ন অবজেক্টস (SaveOrUpdate বা মার্জ প্লাস কিছু অগোছালো কোড) দিয়ে চারপাশে মেসিং করা । সত্তাগুলি যত জটিল, কোডটি মেসিয়ার হয়। (এর অর্থ এটিও তুচ্ছ সংস্থাগুলির সাথে বেশ ভাল কাজ করে)) আয়েন্দে এটিকে স্ট্রিপার প্যাটার্নও বলে এবং এনক্যাপসুলেশন ইস্যুটি ব্যাখ্যা করে।
সুস্পষ্ট এসকিউএল ব্যবহার করার সময় অধ্যবসায় অজ্ঞতা এবং এনএইচ অ্যাপ্লিকেশনগুলি লিখতে না বুঝে । এর লক্ষণ: কোনও বিষয় পরিবর্তনের পরে আপডেটকে কল করা, কেন অবিরত পরিবর্তনগুলি এড়াতে হবে তা ভেবে অবাক করে কেন আপডেট বলা হয়নি, কেন পরিবর্তনগুলি বজায় রাখা হয়।
লেনদেন এবং কাজের প্যাটার্নের একক বোঝা যাচ্ছে না । ঘন ঘন অ্যান্টি-প্যাটার্নগুলি: অন্তর্নিহিত লেনদেন, সেশন-প্রতি-অপারেশন এবং সেশন-প্রতি-অ্যাপ্লিকেশন। আরও কিছু পড়া:
অ্যাপ্লিকেশন লজিক রাখার জন্য এনএইচ ইভেন্টগুলি ব্যবহার করে (উদাঃ ট্র্যাকারগুলি সন্নিবেশ করানো এবং আপডেট করার ট্র্যাকিং পরিবর্তন করা)
টেবিল প্রতি এক ক্লাস তৈরি করুন । কিছু লোক OOD বোঝে না, অন্যরা সম্পর্কের নকশা বুঝতে পারে না।
ভুল
ব্যবহারের একের সাথে এক পরিবর্তে অনেক টু এক। আমি এই উত্তরে ব্যাখ্যা করার চেষ্টা করেছি ।
ব্যবহার আনা যোগদানের SetMaxResult সঙ্গে একযোগে। এই বিষয় সম্পর্কিত আমার সর্বশেষ উত্তর:
লিখন স্ব পরিবর্তন সত্ত্বা । যখন কোনও সত্তা এনএইচ দ্বারা নির্ধারিত মানটি হুবহু ফিরিয়ে দেয় না, তখন এটি নোংরা হিসাবে বিবেচিত হয় এবং প্রতিটি সেশনে আপডেট হয়। উদাহরণস্বরূপ: কোনও সম্পত্তি সেটারে এনএইচ ধ্রুবক সংগ্রহ প্রতিস্থাপন।
IList<Address> Addresses
{
get { return addresses; }
// will cause the addresses collection to be built up from scratch
// in the database in every session, even when just reading the entity.
set { addresses = new List<Address>(value); }
}
int Whatever
{
// will make the entity dirty after reading negative values from the db.
// this causes unexpected updates after just reading the entity.
get { if (whatever < 0) return 0; }
set { whatever = value; }
}
আরও অনুসরণ করা যেতে পারে।