Итак, у меня есть класс «Speaker», с нормальными свойствами, и старый добрый метод как это:Как предотвратить EF от попытки сопоставить метод на моей модели?
public string FullNameFirstLast()
{
return FirstName + " " + LastName;
}
Я использую Entity Framework Code First Волшебное Unicorn издание, и я получаю эту ошибку :
System.NotSupportedException: LINQ to Entities does not recognize the method 'System.String FullNameFirstLast()' method, and this method cannot be translated into a store expression.
что кажется странным, так как это метод, а не свойство, так что я удивляюсь, почему EF будет заботиться о нем так или иначе ... так что я попытался говорить EF, чтобы игнорировать его, как так:
modelBuilder.Entity<Speaker>()
.Ignore(ignore => ignore.FullNameFirstLast())
;
Который не помогает, потому что теперь я получаю сообщение об ошибке вместо:
System.InvalidOperationException: The expression 'ignore => ignore.FullNameFirstLast()' is not a valid property expression. The expression should represent a property: C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'.
Как это сделать? Я предполагаю, что у меня могут быть методы на объектах модели с EF, правильно?
Да. благодаря! Я не обращался к нему напрямую, но я использовал, где у меня был _repo.Speakers(). OrderBy (...), используя этот метод. по-видимому, EF пытается пройти по порядку SQL, и поэтому возникла эта проблема. Мне нужно было сначала материализовать данные из БД, ТОГДА его сортировать. благодаря! –