লিনক ক্যোয়ারী করার চেষ্টা করার সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:
সংস্থাগুলি থেকে লিনকিউ 'বুলিয়ান ইসচারিটিম্যাচিং (সিস্টেম.স্ট্রিং, সিস্টেম.স্ট্রিং)' পদ্ধতিটি স্বীকৃতি দেয় না এবং এই পদ্ধতির কোনও স্টোর এক্সপ্রেশন হিসাবে অনুবাদ করা যায় না।
আমি পূর্ববর্তী অনেকগুলি প্রশ্ন পড়েছি যেখানে লোকেরা একই ত্রুটি পেয়ে থাকে এবং আমি যদি এটি সঠিকভাবে বুঝতে পারি তবে এটি লিনকিউ থেকে সংস্থাগুলির জন্য সম্পূর্ণ লিনক ক্যোয়ারী এক্সপ্রেশনটি একটি সার্ভার ক্যোয়ারীতে অনুবাদ করা প্রয়োজন, এবং তাই আপনি কোনও বাইরের পদ্ধতিতে কল করতে পারবেন না এটা. আমি আমার দৃশ্যের এমন কিছুতে রূপান্তর করতে সক্ষম হইনি যা এখনও কাজ করে, এবং আমার মস্তিষ্ক গলে যেতে শুরু করেছে, তাই আমি আশা করছিলাম যে কেউ আমাকে সঠিক দিকে নির্দেশ করতে পারে। আমরা সত্তা ফ্রেমওয়ার্ক এবং স্পেসিফিকেশন প্যাটার্ন ব্যবহার করছি (এবং আমি উভয়ের পক্ষে নতুন)।
এখানে কোডটি যা স্পেসিফিকেশন ব্যবহার করে:
ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference);
charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList();
এখানে লিনাক এক্সপ্রেশন:
public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied()
{
return p => p.IsCharityMatching(this.charityName, this.charityReference);
}
এখানে ইসচারিটি ম্যাচিং পদ্ধতিটি রয়েছে:
public bool IsCharityMatching(string name, string referenceNumber)
{
bool exists = true;
if (!String.IsNullOrEmpty(name))
{
if (!this.registeredName.ToLower().Contains(name.ToLower()) &&
!this.alias.ToLower().Contains(name.ToLower()) &&
!this.charityId.ToLower().Contains(name.ToLower()))
{
exists = false;
}
}
if (!String.IsNullOrEmpty(referenceNumber))
{
if (!this.charityReference.ToLower().Contains(referenceNumber.ToLower()))
{
exists = false;
}
}
return exists;
}
আপনি কোনো অধিক তথ্য প্রয়োজন হলে আমাকে জানতে দিন।
অনেক ধন্যবাদ,
Annelie
Find()
যখন IsSatisfied()
এটির অভ্যন্তরীণ ব্যবহার করবেন তখন আপনি কীভাবে ব্যবহার করছেন তা দেখতে সুন্দর লাগবে।