Как создать вычисляемое свойство в Data Services (OData)? - PullRequest
7 голосов
/ 05 октября 2010

Я создаю службу OData со службами данных WCF с использованием EDMX. Как создать вычисляемое свойство для типа сущности, чтобы его значение вычислялось в службе (C #) и не поступало из базы данных?
Значение этого свойства основано на значении других свойств, которые сопоставляются с полями в базе данных.

Ответы [ 2 ]

3 голосов
/ 05 октября 2010

Если вы открываете свой файл EDMX напрямую, используя поставщика Entity Framework для служб данных, что-то вроде этого:

public class MyService: DataService<MyEntities> {

Тогда, к сожалению, вы не сможете предоставить «новые» свойства, которых нет в базовой модели EDM Entity Framework.

Сказав, что у вас есть другие варианты, вы можете написать поставщика отражения или пользовательского поставщика, который добавляет дополнительное свойство и делегирует большую часть работы EF под капотом.

Проблема в том, что все делегации делегировать не так просто.

Эта серия сообщений объясняет провайдеров и показывает, как создать службу на основе собственного провайдера, а эта показывает , как создавать сервис с использованием провайдера отражений.

2 голосов
/ 06 октября 2010

Решение, которое я нашел, заключается в использовании Entity Framework Code First вместо EDMX.Это позволяет создавать вычисляемые свойства, просто создавая стандартные свойства в коде.Вот пример:

public class Person
{
  public String FirstName { get; set; }
  public String LastName { get; set; }
  public String FullName
  {
    get { return FirstName + " " + LastName; }
  }
}
...