আমার নিম্নলিখিত জেনেরিক এক্সটেনশন পদ্ধতি রয়েছে:
public static T GetById<T>(this IQueryable<T> collection, Guid id)
where T : IEntity
{
Expression<Func<T, bool>> predicate = e => e.Id == id;
T entity;
// Allow reporting more descriptive error messages.
try
{
entity = collection.SingleOrDefault(predicate);
}
catch (Exception ex)
{
throw new InvalidOperationException(string.Format(
"There was an error retrieving an {0} with id {1}. {2}",
typeof(T).Name, id, ex.Message), ex);
}
if (entity == null)
{
throw new KeyNotFoundException(string.Format(
"{0} with id {1} was not found.",
typeof(T).Name, id));
}
return entity;
}
দুর্ভাগ্যক্রমে সত্তা ফ্রেমওয়ার্ক কীভাবে পরিচালনা করতে জানে না predicate
যেহেতু সি # প্রিকেটটিকে নীচে রূপান্তরিত করে:
e => ((IEntity)e).Id == id
সত্তা ফ্রেমওয়ার্ক নিম্নলিখিত ব্যতিক্রম ছোঁড়ে:
'সামেরেন্টি' টাইপ করতে 'আইএনটিটি' টাইপ কাস্ট করতে অক্ষম। সংস্থাগুলিতে লিনকিউ কেবল ইডিএম আদিম বা গণনা প্রকারের castালাই সমর্থন করে।
কীভাবে আমরা আমাদের IEntity
ইন্টারফেসের সাথে সত্ত্বা ফ্রেমওয়ার্ককে কাজ করতে পারি ?