আমি এএসপি.নেট এমভিসি ৪ ব্যবহার করে একটি 3-স্তরযুক্ত অ্যাপ্লিকেশন ডিজাইন করছি I আমি নিম্নলিখিত উত্সগুলিকে রেফারেন্স হিসাবে ব্যবহার করেছি।
আমি এখনও অবধি নিম্নলিখিত desingn আছে।
উপস্থাপনা লেয়ার (পিএল) (প্রধান MVC প্রকল্প, যেখানে এম এর MVC ডেটা অ্যাক্সেস লেয়ার সরিয়ে নেওয়া হয়েছে):
MyProjectName.Main
Views/
Controllers/
...
ব্যবসায় যুক্তিযুক্ত স্তর (বিএলএল) :
MyProjectName.BLL
ViewModels/
ProjectServices/
...
ডেটা অ্যাক্সেস লেয়ার (ডাল) :
MyProjectName.DAL
Models/
Repositories.EF/
Repositories.Dapper/
...
এখন, পিএল বিএলএল এবং বিএলএল উল্লেখ ডালের রেফারেন্স করে। এই ভাবে নিম্ন স্তর তার উপরেরটির উপর নির্ভর করে না।
এই নকশায় পিএল বিএলএল একটি পরিষেবা প্রার্থনা করে। পিএল একটি ভিউ মডেলকে বিএলএলে পাস করতে পারে এবং বিএলএল একটি ভিউ মডেল পিএল-এ ফিরে যেতে পারে।
এছাড়াও, বিএলএল ডাল স্তরটি ডল করে এবং ডাল স্তর একটি মডেলকে বিএলএলে ফিরে আসতে পারে। বিএলএল পরিবর্তে একটি ভিউ মডেল তৈরি করতে এবং এটিকে পিএল এ ফিরিয়ে দিতে পারে।
এখন অবধি এই প্যাটার্নটি আমার পক্ষে কাজ করছিল। তবে, আমি এমন একটি সমস্যায় পড়েছি যেখানে আমার কিছু ভিউমোডেলগুলি বেশ কয়েকটি সত্তায় যোগদান করে। সাধারণ এমভিসি পদ্ধতির মধ্যে, নিয়ামকটিতে আমি join
এর পরে লিনকুই কোয়েরি ব্যবহার করি select new MyViewModel(){ ... }
। তবে এখন, ডালেতে আমার ভিউমোডেলগুলি সংজ্ঞায়িত (বিএলএল) যেখানে অ্যাক্সেস নেই।
এর অর্থ আমি ডএল-এ যোগদান করতে পারি না এবং এটি বিএলএলে ফিরিয়ে দিতে পারি না। দেখে মনে হচ্ছে আমাকে ডএল-এ আলাদা জিজ্ঞাসা করতে হবে (এক প্রশ্নের সাথে যোগ দেওয়ার পরিবর্তে) এবং বিএলএল এর পরে ভিউমোডেল তৈরি করতে এর ফলাফল ব্যবহার করবে। এটি খুব অসুবিধাজনক, তবে আমি মনে করি না যে ভিএলমোডেলগুলিতে আমার ডাল প্রকাশ করা উচিত।
কোনও ধারণা কীভাবে আমি এই দ্বিধাটি সমাধান করতে পারি? ধন্যবাদ।