场景
我在 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配置
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();
}
尝试
当我删除行时,它会返回正确的响应:
modelBuilder.ApplyConfiguration(new CategoryTypeConfiguration());