【问题标题】:Add to odata collection property in .NET添加到 .NET 中的 odata 集合属性
【发布时间】:2021-03-03 09:11:29
【问题描述】:

使用 Visual Studio C# .NET 中的 odata-v4 服务连接,我得到了一个 testDefinition 类型的实体。 testDefinition 具有名为 features 的属性,它是 feature 类型的实体的集合。

在 DB 中,testDefinitionfeature 是多对多的,带有一个联结表。

在我的代码中,我将服务引用添加到为数据库的 EDMX 提供服务的 Web 服务。

代码生成正确,我运行:

var dsc = new Container(new Uri("http://webserver/webapi/odata/"));

var someFeature = new Feature
{
    name = $"Sample feature created with C# {DateTime.UtcNow}",
};

var someOtherFeature = new Feature
{
    name = $"Sample other feature created with C# {DateTime.UtcNow}",
};

dsc.AddToFeature(someFeature);
dsc.AddToFeature(someOtherFeature);

dsc.SaveChanges();

var someTestDefinition = new TestDefinition
{
    name = $"Sample test created with C# {DateTime.UtcNow}",
    description = $"A nice succinct description",
};    

dsc.AddToTestDefinition(someTestDefinition);
dsc.SaveChanges();

someTestDefinition.features.Add(someFeature);
someTestDefinition.features.Add(someOtherFeature);

dsc.SaveChanges();

问题是从测试定义到特征的映射没有记录在数据库中。

有没有人遇到过这个问题,或者更好的是,解决了它?

供参考:

【问题讨论】:

  • 服务器是什么?如果您在服务器上使用 Microsoft 的 OData WebAPI,它不支持请求正文中的 odata.bind,即使 Microsoft 的 OData 客户端会生成带有 odata.bind 指令的请求 (github.com/OData/WebApi/issues/158),我建议拦截请求JSON body 发送到服务器查看。可以在服务器端实现您自己对 odata.bind 的支持(我在自己的一个项目中做过),但这很有挑战性。
  • 这是 MS WebApi - 感谢您提供的信息。您应该将其添加为答案。
  • 我实际上会添加我的解决方案来实现 odata.bind 作为答案,但可能需要一两天,您使用的是什么版本的 OData WebAPI(该解决方案使用了一些库'内部结构在最近的版本中发生了很大变化)?
  • 不确定 - 现在我的项目中有很多对 ODATA 的引用,我有点困惑。我正在将我的 odata 引用的屏幕截图添加到问题的正文中。谢谢。
  • 我删除了 Microsoft.Data.OData 引用。这适用于 v3,不需要。

标签: c# entity-framework-6 odata odata-v4


【解决方案1】:

我不能说这是什么时候实现的,但它可以在以后的版本中使用,我可以确认的最早版本是OData.Client v 7.6.2

如果对于使用 当前 版本的 OData ClientServer 库的任何新用户来说这是一个问题,则通常表明架构是未正确配置或发布。

还要检查 API 是否使用了类似的当前 OData 运行时,上面的测试是针对带有 Microsoft.AspNet.OData v7.3.0 的 API 执行的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2019-08-06
    • 2018-02-25
    相关资源
    最近更新 更多