একটি "মাইক্রো-ওআরএম" এর কিছু সুবিধা কী কী?


21

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

উদাহরণস্বরূপ, ডাপারের উদাহরণের দিকে তাকানো:

var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });

কোনও হ্যান্ডরোলড ADO.NET ডেটা স্তর ব্যবহার করার চেয়ে আলাদা কীভাবে, আপনাকে কমান্ডটি লিখতে হবে না, প্যারামিটারগুলি সেট করুন এবং আমি মনে করি কোনও বিল্ডার ব্যবহার করে সত্ত্বার মানচিত্রটি ফিরে আসবে। দেখে মনে হচ্ছে আপনি এমনকি এসকিউএল স্ট্রিং হিসাবে কোনও সঞ্চিত প্রক্রিয়া কলটি ব্যবহার করতে পারেন।

মাইক্রো ওআরএম ব্যবহার করতে ইচ্ছুক হয়ে ওঠার জন্য এখানে কী রয়েছে এমন অন্যান্য স্পষ্টত সুবিধা রয়েছে? আমি ADO.NET ব্যবহারের "পুরাতন" পদ্ধতিতে কীভাবে কিছু কোডের কয়েকটি লাইন বাদে কীভাবে কিছু সংরক্ষণ করছে তা আমি সত্যিই দেখছি না - আপনাকে কী এসকিউএল কার্যকর করতে হবে তা নির্ধারণ করার জন্য আপনাকে এখনও লিখতে হবে (যা লোমশ হতে পারে) এবং আপনাকে এখনও টেবিলের মধ্যে সম্পর্কের মানচিত্র রাখতে হবে (যে অংশটি IMHO ORMs সবচেয়ে বেশি সাহায্য করে)।


+1: আপনার এখনও একটি কোয়েরি ভাষার প্রয়োজন হবে যাই হোক না কেন, আপনি লিনক বা এসকিএল-এর মতো পরিচিত কিছুতে আটকে থাকতে পারেন, তবে আপনার উদাহরণে যেমন বেনামে ফিরতে হবে তা কোনও সঙ্কুচিত ডোমেনের সাথে সম্পর্কিত মডেল মানচিত্রের মতো বলে মনে হচ্ছে না মডেল. এটি আমার কাছে বিজোড় হিসাবে বেঁধেছে।
স্টিভেন ইভার্স

হ্যাঁ, আমি ড্যাপারের কোনও দৃ concrete় উদাহরণ খুঁজে পাইনি, এটির জন্য সাইটটিতে এটি আক্ষরিক অর্থে var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });এবং পরে dog.First().Ageবৈশিষ্ট্য অ্যাক্সেস করার জন্য।
ওয়েইন মোলিনা

5
উদাহরণ কোনও বেনামি ধরণটি ফেরায় না, অতিরিক্ত টাইপিং সংরক্ষণের জন্য "ভার" কীওয়ার্ডটি সি # তে একটি কংক্রিট টাইপের জায়গায় ব্যবহার করা যেতে পারে, সেই ক্যোয়ারীটি আইনেউমারেবল <পার্সন> ফিরিয়ে দেবে।
এড জেমস

1
এর মূল কারণ হ'ল কম ওভারহেড হ'ল ক্রমাগত স্প্রোকগুলি পরীক্ষা করা এবং তারপরে তুচ্ছ সিআরইউডি কোডের জন্য প্রক্স সংরক্ষণ করা উচিত বলে উল্লেখ না করে প্রায় দুই ডজন এসকিউএল ফাইল আপডেট করতে হবে।
ওয়েইন মোলিনা

2
সমস্ত সংস্করণ (এবং আমি এসকিউএল এবং আপনার পছন্দসই অন্যান্য ভাষা-পছন্দগুলি সহ) এখানে একই সংস্করণ নিয়ন্ত্রণ সিস্টেমে রাখার জন্য স্প্রোকগুলি না ব্যবহার করার মূল সুবিধা। আমি এখনও একটি ভাল ক্রস-ডিবি ডাটাবেস ভিসিএস পেরিয়ে এসেছি।
এড জেমস

উত্তর:


12

উপকারিতা:

  • ডেটা রিডার এবং পার্সিংয়ের সাথে একটি কাঁচা স্কেলকম্যান্ডের অনুরূপ কর্মক্ষমতা।
  • DataReader এর জন্য আপনার নিজস্ব রূপান্তর স্তরটি রোল করার দরকার নেই।

সত্যিই সত্য, সত্য। আপনার এসকিএল সংযোগগুলিতে আপনার খুব হালকা ওজনের একটি মোড়ক পাওয়া গেছে যা আপনার জন্য অবজেক্ট রূপান্তরটি করবে। আপনি, স্পষ্টতই, কোনও অটোজেনারেটেড এসকিউএল মোকাবেলা না করেই ক্যারিগুলিকে সূক্ষ্ম-টিউন করতে পারেন।

কনস:

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

তাদের জায়গা আছে এবং তারা একটি খুব কার্যকর সরঞ্জাম যা ডিবিয়ের সাথে আলাপচারিতার সময় ডেভেলপারদের কাছ থেকে কিছু "গাধা কাজ" কেড়ে নিতে পারে তবে বাস্তবে তারা কোনও বৃহত স্কেলটিতে পুরো ওআরএমের জায়গা নিতে পারে না কর্মক্ষমতা-সমালোচনামূলক নয় এমন প্রশ্নের জন্য সিস্টেম, কেবল বর্ধিত রক্ষণাবেক্ষণ ব্যয়ের কারণে।

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


এই লাইব্রেরি রয়েছে যেগুলি এই মাইক্রো ormsগুলির একটি মোড়ক হিসাবে ব্যবহার করা যেতে পারে যা আপনি টাইপগুলির সাথে উল্লেখ করেছেন এমন সমস্যা হ্রাস করতে পারে। উদাহরণস্বরূপ: দাপ্পারের জন্য সাধারণ ক্রুড অ্যাড-অন
শ্রীবত্সা হরিশ ভেঙ্কটরমন

3

মাইক্রো ওআরএম পেটাপোকোর ওয়েবসাইটে তিনি অন্য ওআরএমের সাথে কিছু সুবিধা ব্যাখ্যা করেছেন। আরও ব্যাখ্যা করতে

পেটাপোকো। নেট এবং মনোর জন্য একটি ক্ষুদ্র, দ্রুত, একক ফাইলের মাইক্রো-ওআরএম।

  • ম্যাসিভের মতো এটি একটি একক ফাইল যা আপনি সহজেই যে কোনও প্রকল্পে যুক্ত করেন
  • ম্যাসিভের বিপরীতে এটি শক্তভাবে টাইপড পোকোর সাথে কাজ করে
  • ম্যাসিভের মতো, এটি এখন গতিশীল সম্প্রসারণকেও সমর্থন করে - আরও পড়ুন
  • অ্যাক্টিভেকর্ডের মতো এটি অবজেক্ট এবং ডাটাবেস টেবিলের মধ্যে একটি ঘনিষ্ঠ সম্পর্ককে সমর্থন করে
  • সাবসনিকের মতো, এটি টি 4 টেমপ্লেট সহ পোকো ক্লাসের প্রজন্মকে সমর্থন করে
  • ড্যাপারের মতো এটিও দ্রুত কারণ এটি বৈশিষ্ট্যে কলামের মান নির্ধারণের জন্য গতিশীল পদ্ধতি প্রজন্ম (এমএসআইএল) ব্যবহার করে

1

কোনও হ্যান্ডরোলড ADO.NET ডেটা স্তর ব্যবহার করার চেয়ে আলাদা কীভাবে, আপনাকে কমান্ডটি লিখতে হবে না, প্যারামিটারগুলি সেট করুন এবং আমি মনে করি কোনও বিল্ডার ব্যবহার করে সত্ত্বার মানচিত্রটি ফিরে আসবে। দেখে মনে হচ্ছে আপনি এমনকি এসকিউএল স্ট্রিং হিসাবে একটি সঞ্চিত প্রক্রিয়া কলটি ব্যবহার করতে পারেন।

আমি বিশ্বাস করি যে এটি একটি মাইক্রো-ওআরএমের প্রধান সুবিধা, কোনও ওআরএমের অন্যান্য সুবিধাগুলি পেতে আপনার একটি সম্পূর্ণ ব্লোন্ড ব্যবহার করা দরকার। এটি এবং কোড তুলনামূলকভাবে ছোট, সুতরাং আপনার যদি এটি কাস্টমাইজ করার দরকার হয় তবে এটি সহজ be

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.