【问题标题】:Odata controller returns not complete result. (EDM model)Odata 控制器返回不完整的结果。 (电火花模型)
【发布时间】:2019-11-07 16:42:39
【问题描述】:

场景

我在我的 EFcontext 中定义了一些名为 Category 的实体。它是干净的 POCO 类。在 EFContext OnModelCreating 方法中,我应用实体配置。在我的创业公司中,我为我的查询配置 Odata 并基于 Conventional Builder 构建 EDM 模型。我的控制器继承自 ODataController,具有 ODataRoutePrefixOdataRouteEnableQuery 属性。

问题

在我收到的回复中:

{
"@odata.context": "https://localhost:44362/api/odata/$metadata#Categories",
"value": [

这不是错误。它以'['结尾。没有错误。 http状态: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());

【问题讨论】:

    标签: api entity-framework-core odata asp.net-core-2.2


    【解决方案1】:

    我曾经遇到过这个错误。在我的情况下,它发生是因为实体框架中发生了错误,但服务还是返回了200 OK

    要查看您的应用程序是否属于这种情况,您可以将 Visual Studio 配置为中断所有异常:

    • 点击:调试-&gt;Windows-&gt;异常设置(Ctrl+Alt+E
    • 检查:“公共语言运行时异常”

    然后再次发送您的请求,看看是否弹出任何异常。

    【讨论】:

    • 谢谢。就我而言,我忘记执行更新数据库(迁移)。我正在使用 2 EF DbContext。第一个用于命令(DDD 和迁移),第二个用于查询(odata)。来自命令上下文的映射尚未在数据库中执行,因此具有相同映射的查询上下文发现了错误的数据模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2020-06-05
    • 2014-01-05
    相关资源
    最近更新 更多