পোস্ট
কোড ফার্স্টের সাথে স্টোর্ড প্রসিজার কল করা
১৬ অক্টোবর, ২০১৪ • 2 মিনিট পড়া
Entity Framework 6 Code First এর একটি দুর্বলতা হল ডাটাবেস কনস্ট্রাক্ট (ভিউ, স্টোর্ড প্রসিজার… ইত্যাদি) নেটিভভাবে কল করার জন্য সাপোর্টের অভাব। যারা Entity Framework (EF) এ Code-First সম্পর্কে শোনেননি বা ব্যবহার করেননি তাদের জন্য, Code-First হল সহজভাবে একটি Fluent ম্যাপিং API। এর ধারণা হল আপনার সমস্ত ডাটাবেস ম্যাপিং কোডে (অর্থাৎ C#) তৈরি করা এবং ফ্রেমওয়ার্ক তখন ডাটাবেস স্কিমায় পরিবর্তনগুলি তৈরি এবং ট্র্যাক করে।
ঐতিহ্যবাহী Entity Framework এ স্টোর্ড প্রসিজার কল করতে আপনি এটি আপনার EDMX ফাইলে ম্যাপ করতেন। এটি একটি মাল্টি-স্টেপ প্রক্রিয়া। প্রক্রিয়াটি সম্পন্ন হওয়ার পরে একটি পদ্ধতি তৈরি করা হয়, যা DataContext থেকে ঝুলে থাকে।
আমি স্টোর্ড প্রসিজার কল করা সহজ করার চেষ্টা করেছি। একটি স্টোর্ড প্রসিজারের হৃদয়ে আপনার কাছে একটি প্রসিজার নাম, N সংখ্যক প্যারামিটার এবং একটি ফলাফল সেট রয়েছে। আমি একটি ছোট এক্সটেনশন পদ্ধতি লিখেছি যা একটি প্রসিজার নাম, প্যারামিটার এবং একটি রিটার্ন টাইপ নেয়। এটি কাজ করে। প্রসিজার এবং এর প্যারামিটার ম্যাপ করার প্রয়োজন নেই।
public static List<TReturn> CallStoredProcedure<TParameters, TReturn>(this DataContext context, string storedProcedure, TParameters parameters) where TParameters : class where TReturn : class, new()
{
IDictionary<string,object> procedureParameters = new Dictionary<string, object>();
PropertyInfo[] properties = parameters.GetType().GetProperties();
var ps = new List<object>();
foreach (var property in properties)
{
object value = property.GetValue(parameters);
string name = property.Name;
procedureParameters.Add(name, value);
ps.Add(new SqlParameter(name, value));
}
var keys = procedureParameters.Select(p => string.Format("@{0}", p.Key)).ToList();
var parms = string.Join(", ", keys.ToArray());
return context.Database.SqlQuery<TReturn>(storedProcedure + " " + parms, ps.ToArray()).ToList();
}
ব্যবহার
var context = new DataContext();
List<User> users = context.CallStoredProcedure<object,User>("User_GetUserById", new{userId = 3});
লেখক: চাক কনওয়ে একজন এআই ইঞ্জিনিয়ার যার কাছে প্রায় ৩০ বছরের সফটওয়্যার ইঞ্জিনিয়ারিং অভিজ্ঞতা রয়েছে। তিনি ব্যবহারিক এআই সিস্টেম তৈরি করেন—কন্টেন্ট পাইপলাইন, অবকাঠামো এজেন্ট এবং সরঞ্জাম যা বাস্তব সমস্যার সমাধান করে—এবং তার শেখার বিষয়গুলি শেয়ার করেন। তার সাথে সোশ্যাল মিডিয়ায় সংযোগ করুন: X (@chuckconway) অথবা তাকে YouTube এবং SubStack এ দেখুন।