Как вы предоставляете свойство в классе, который имеет защищенный или частный Сеттер с помощью 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));
}
}
Кажется, это работает. Тем не менее, это кажется странным ... есть ли лучший способ?