Expose Private Setter в. Net Core 3.1 OData EDMModelBuilder - PullRequest
0 голосов
/ 14 февраля 2020

Как вы предоставляете свойство в классе, который имеет защищенный или частный Сеттер с помощью EDMBuilder для. Net Core 3.1 OData.

Например:

public class Person
{
   public int Id { get; set; }
   public string Name { get; protected set; }
}

public class SomeClassToBuildEdmModel
{
   public static IEdmModel GetEdmModel( IServiceProvider serviceProvider )
   {
      var builder = new ODataConventionModelBuilder( serviceProvider );
      builder.EntitySet<Person>(nameof(Person)).EntityType.HasKey( e => e.Id );
   }
}

Выполнение a Get on the endpoint будет получать только Id, а не Name. Конструктор игнорирует любое свойство, которое имеет закрытый или защищенный установщик.

Как переопределить это или предоставить свойство без удаления модификатора защищенного доступа?

Я нашел эту ссылку: Старое решение проблемы

Но так как этому ответу 2 года, я надеялся на более элегантное или более простое решение.

Обновление: я добавил:

public class SomeClassToBuildEdmModel
{
   public static IEdmModel GetEdmModel( IServiceProvider serviceProvider )
   {
      var builder = new ODataConventionModelBuilder( serviceProvider );
      var personConfig = builder.EntityType<Person>();
      personConfig.HasKey( e => e.PersonId );
      **personConfig.Property( e => e.Name ).IsOptional();**
      builder.EntitySet<Person>(nameof(Person));
   }
}

Кажется, это работает. Тем не менее, это кажется странным ... есть ли лучший способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...