场景
我在EFcontext中定义了一个称为Category的实体。这是干净的POCO类。在EFContext OnModelCreating方法中,我应用实体配置。在启动时,我为查询配置Odata并基于Conventional Builder构建EDM模型。我的控制器继承自ODataController,具有ODataRoutePrefix,OdataRoute和EnableQuery属性。
问题
我收到的答复是:
{
"@odata.context": "https://localhost:44362/api/odata/$metadata#Categories",
"value": [
这不是错误。它以“ [”结尾。没错httpstatus:200
odata config
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());
我曾经遇到此错误。就我而言,这是因为Entity Framework中发生了错误,但该服务仍然返回了200 OK
。
要查看您的应用程序中是否存在这种情况,可以将Visual Studio配置为在所有异常情况下都中断:
->
Windows ->
异常设置(Ctrl
+Alt
+ E
)然后再次发送您的请求,看看是否弹出任何异常。