मेरे पास निम्नलिखित सामान्य विस्तार विधि है:
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;
}
दुर्भाग्यवश Entity Framework को यह नहीं पता है कि predicate
C को कैसे हैंडल किया जाए क्योंकि C # को विधेय में परिवर्तित किया गया है:
e => ((IEntity)e).Id == id
एंटिटी फ्रेमवर्क निम्नलिखित अपवाद फेंकता है:
'SomeEntity' टाइप करने के लिए 'IEntity' टाइप करने में असमर्थ। LINQ to Entities केवल EDM आदिम या गणना प्रकार का समर्थन करता है।
हम अपने IEntity
इंटरफेस के साथ एंटिटी फ्रेमवर्क कैसे काम कर सकते हैं ?