сценарий
У меня есть объект под названием Категория , определенный в моем EFcontext . Это чистый класс POCO. В методе EFContext OnModelCreating я применяю конфигурацию объекта. При запуске я настраиваю Odata для своих запросов и строю модель EDM на основе Conventional Builder . Мой контроллер унаследован от ODataController , имеет ODataRoutePrefix , OdataRoute и EnableQuery .
Проблема
В моем ответе я получил:
{
"@odata.context": "https://localhost:44362/api/odata/$metadata#Categories",
"value": [
Это не ошибка. Он заканчивается на «[». Нет ошибки. httpstatus: 200
конфигурация odata
app.UseMvc(options =>
{
options.EnableDependencyInjection();
options.Select().Filter().OrderBy().Count().Expand().MaxTop(100).SkipToken();
options.MapODataServiceRoute("odata", "api/odata", GetEdmModel());
});
private static IEdmModel GetEdmModel()
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
var category = builder.EntitySet<Category>("Categories");
category.EntityType.HasKey(c => c.Id);
return builder.GetEdmModel();
}
EF CategoryTypeConfiguration
public void Configure(EntityTypeBuilder<Category> categoryConfiguration)
{
categoryConfiguration.ToTable("Categories", QueryEFContext.DefaultSchema);
categoryConfiguration.HasKey(category => category.Id);
categoryConfiguration.Property(category => category.Name).IsRequired();
categoryConfiguration.Property(category => category.Color).IsRequired();
}
Tried
Возвращает правильный ответ при удалении строки:
modelBuilder.ApplyConfiguration(new CategoryTypeConfiguration());